0

在下面的重定向代码中,如果传入的流量有路径和查询字符串数据,是自动重传,还是必须显式捕获和重传?

if($_SERVER['SERVER_NAME'] == 'goose.com.au' || $_SERVER['SERVER_NAME'] == 'www.goose.com.au'){
    header( "HTTP/1.1 301 Moved Permanently" ); 
    header( "Location: http://www.geese.com.au" ); 
}

例如,假设流量以

http://www.goose.com.au/mother?request=need+new+hat

这会自动重定向到

http://www.geese.com.au/mother?request=need+new+hat

还是我需要捕获详细信息并在“位置:”中重新指定它们?

如果是后者,目前的最佳实践技术是什么?

4

2 回答 2

2

它必须被捕获并重新传输。在这种只更换主机的情况下,应该可以安全使用$_SERVER['REQUEST_URI'].

<?php
if($_SERVER['SERVER_NAME'] == 'goose.com.au' || $_SERVER['SERVER_NAME'] == 'www.goose.com.au'){
    header( "HTTP/1.1 301 Moved Permanently" ); 
    header( "Location: http://www.geese.com.au{$_SERVER['REQUEST_URI']}" ); 
}
于 2013-05-23T03:39:16.887 回答
2

不,您必须在header("Location...")中自己做。

我认为这是最简单的解决方案:

header("Location: http://www.geese.com.au".$_SERVER['REQUEST_URI']);

请查看$_SERVER以了解REQUEST_URI参数。我认为$_SERVER['REQUEST_URI']行为取决于系统配置。

于 2013-05-23T03:45:14.263 回答