2012-08-25 50 views
2

工作在所有我工作的一个PHP代码,并有header('Location: '.$location, TRUE, 200);,它并没有重定向到$location(价值在这里是“https://thepiratebay.se/”)。我列出了所有标题,请帮助。的“位置”标头不是在PHP

您可以看到Location标题存在但未重定向到。为什么?

浏览器测试:Chrome,Firefox,IE,Safari。

集管分别为(如图所示由Chrome):

HTTP/1.1 200 OK 
Date: Sat, 25 Aug 2012 15:10:54 GMT 
Server: Apache/2.4.2 (Win32) PHP/5.4.4 
X-Powered-By: PHP/5.4.4 
Location: https://thepiratebay.se/ 
Content-Length: 5935 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: text/html 
+0

如果浏览器没有重定向,那不是PHP的错。很显然'header()'调用工作得很好。 – FtDRbwLXw6

+0

什么可能被打破? –

回答

5

你的错误是200响应代码。

改变这一行:

header('Location: '.$location, TRUE, 200); 

为了

header('Location: '.$location, TRUE, $code); 

$code要么301或302(永久VS暂时Moved转移)。

+0

这只是工作!但是我感到困惑的是,这个工作更早,现在它没有奏效。反正谢谢! –

+1

好吧,如果你完全跳过响应代码参数,PHP会自动发送一个302响应代码给'Location'标头。 –

+0

不要忘记307和308(从HTTP/1.1开始)。 – FtDRbwLXw6