我需要重定向一些网址。
以前我有
http://mysite.com/foobar/?section_id=1234
这些都没有指向
http://mysite.com/foobar/1234
我在我的代码中添加了以下内容来处理访问旧网址的尝试:
$section_id = filter_input(INPUT_GET, 'section_id', FILTER_SANITIZE_NUMBER_INT);
if ( $section_id ) {
header( "HTTP/1.1 301 Moved Permanently" );
header( "Location: ".$_SERVER["SERVER_NAME"]."/foobar/".$section_id );
}
问题是重定向网址后是:
http://mysite.com/foobar
所需的ID不存在!
如果我这样做if
陈述
echo "Location: ".$_SERVER["SERVER_NAME"]."/foobar/".$section_id;
我明白了:
http://mysite.com/foobar/1234
但是重定向仍然无法包含1234
部分。
为什么会这样,以及如何根据需要重定向?
lynx -head -dump http://mysite.com/foobar/1234的输出(即看起来对我来说是正确的)
HTTP/1.1 301 Moved Permanently
Date: Mon, 20 Feb 2012 18:55:09 GMT
Server: Apache/2.2.3 (CentOS)
X-Powered-By: PHP/5.2.6
Set-Cookie: PHPSESSID=c35123456; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
X-Pingback: http://mysite.com/xmlrpc.php
Link: <http://wp.me/mysite>; rel=shortlink
Location: mysite.com/foobar/1234
Vary: Accept-Encoding
Connection: close
Content-Type: text/html; charset=UTF-8
答案 0 :(得分:3)
Location
标头必须具有绝对有效的URL作为其值。即必须以http://
开头。
修改:Location
标头值也可以是以正斜杠/
开头的绝对路径。