PHP重定向页面,状态代码有问题

时间:2011-09-28 10:12:17

标签: php http-status-code-410

我正在尝试使用PHP标头函数将

重定向到使用HTTP 410状态的页面
header("HTTP/1.1 410 Gone");
header('Location: http://domain.com/down.php');
exit;

问题是即使我设置了410状态代码......状态代码也会自动更改为302

我也试过

header('Location: domain.com/down.php', true, 410);
exit;

它显示410重定向,但重定向的页面没有显示任何内容。它显示一个空白页面。

有人知道是否有解决方案吗?

5 个答案:

答案 0 :(得分:8)

410错误表示Web服务器没有URL的转发地址,因此不能重定向到新的Web服务器。因此,您使用第二个代码段获得的空白页是正确的。 第一个代码段也会提供正确的结果 - Location会创建指向给定地址的重定向。 因此,您的代码或PHP中没有错误。我不确定你做了你真正需要的东西=)

答案 1 :(得分:1)

尝试使用一些正确的引号?

header("HTTP/1.1 410 Gone");
header("Location: http://domain.com/down.php");
exit;

答案 2 :(得分:1)

最后一个标题行是设置状态代码的正确方法:

header('Location: domain.com/down.php', true, 410);

但是,Location标题名称需要完全限定的网址,您的网址看起来不完整。那是无效的。

除此之外,您不发送任何HTTP响应正文,因此浏览器只能显示空白页面。要显示非空白页面,请提供响应正文:

header('Location: http://domain.com/down.php', true, 410);
echo '<h1>Gone.</h1><a href="http://domain.com/down.php">here.</a>';
exit;

提供响应正文很有用,因为用户代理不需要自动关注Location标头,特别是与the 410 response code RFC 2616一样,HTTP不需要名为Location的响应标头客户端。

也许您正在寻找301 Moved Permanently

答案 3 :(得分:0)

header('Location: http://domain.com/down.php', true, 410);
exit;

应该有效。您忘记了URL中的协议 此外,AFAIU,Yo可以使用

header('Location: 'http://domain.com/'down.php');
header("HTTP/1.1 410 Gone");
exit;

但您确定需要Redirect和4xx HTTP状态吗?

答案 4 :(得分:0)

您必须包含错误页面:

header("HTTP/1.0 410 Gone"); include_once("410.html"); exit();