我正在尝试使用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重定向,但重定向的页面没有显示任何内容。它显示一个空白页面。
有人知道是否有解决方案吗?
答案 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();