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。但是,如果您只是构建用于测试网关集成的模拟,那应该没问题。
我有一个实时站点,我想将页面重定向到我当前正在开发的机器上。我尝试了以下
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。但是,如果您只是构建用于测试网关集成的模拟,那应该没问题。