PHP 重定向到本地主机

PHP redirect to localhost

我有一个实时站点,我想将页面重定向到我当前正在开发的机器上。我尝试了以下

header('HTTP/1.1 307 Temporary Redirect');
header('Location: http://localhost/dev/test.php');

不应重定向到实时服务器的本地主机,而是重定向到我当前用于开发的本地计算机。这只是为了测试我添加到我的站点的支付网关(支付网关需要一个有效的 URL 才能重定向到,因此我不能使用本地主机)。

支付网关将重定向到

http://www.example.com/test.php

然后应该重定向到我当前的机器:

http://localhost/dev/test.php

如果 php 无法解决这个问题,我可以使用 apache 重定向来做到这一点吗? 我还想将实时服务器接收到的所有 GET 和 POST 参数发送到我的本地页面。

您不应使用 localhost,因为它始终由客户端计算机解析。

header('Location: http://localhost/dev/test.php');

将 localhost 替换为您的服务器域名,如下所示:

header('Location: http://yourliveserver.com/dev/test.php');

您不需要发送 HTTP 1.1 header,这可能是阻止重定向工作的原因。你的网络服务器会自动添加这个,因为它需要发送状态码。相反,将 307 状态作为 header() 的第三个参数传递:

header('location: http://localhost/some/url', true, 307);

重定向 header 由您的浏览器解析,因此 "localhost" 将与您的浏览器 运行 在同一台机器上。

要传递所有 GET 参数,您可以将 $_SERVER['QUERY_STRING'] 附加到 URL:

header('location: http://localhost/some/url?' . $_SERVER['QUERY_STRING'], true, 307);

POST参数比较复杂。您需要通过连接 $_POST 数组中的所有内容来构建您自己的 URL。请务必对值进行 urlencode()。

$redirect_url = 'http://localhost/some/url?';
foreach($_POST as $key => $value){
    $redirect_url .= $key . '=' . urlencode($value) . '&';
}
header('location: ' . $redirect_url, true, 307);

请记住,您只能将 POST 请求重定向为 GET。但是,如果您只是构建用于测试网关集成的模拟,那应该没问题。