在以下重定向代码中,如果传入流量有路径和查询字符串数据,是自动重传,还是必须捕获并显式重传?
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
还是我需要捕获细节并在"Location:"中重新指定它们?
如果是后者,当前的最佳实践技术是什么?
必须捕获并重新传输。在这种只替换主机的情况下,使用$_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']}" );
}
不行,你必须自己在header("Location…")
我认为这是最简单的解决方案:
header("Location: http://www.geese.com.au".$_SERVER['REQUEST_URI']);
请查看$_SERVER来了解REQUEST_URI参数。我认为$_SERVER['REQUEST_URI']行为取决于系统配置。