PHP重定向到localhost

时间:2016-06-02 09:24:39

标签: php apache redirect localhost

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

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

不应该对实时服务器的localhost进行重定向,而应该对我目前用于开发的本地机器进行重定向。这只是测试我添加到我的网站的支付网关(支付网关需要一个有效的URL重定向到,因此我不能使用localhost)。

付款网关将重定向到

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

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

http://localhost/dev/test.php

如果php无法管理此问题,我可以使用apache重定向执行此操作吗? 我还想将在实时服务器上收到的所有GET和POST参数发送到我的本地页面。

2 个答案:

答案 0 :(得分:1)

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

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

重定向标题由您的浏览器解析,因此“localhost”将与您的浏览器运行的机器相同。

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

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。但是,如果您只是构建一个用于测试网关集成的模拟器,那应该没问题。

答案 1 :(得分:0)

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

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

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

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