-1

我正在尝试使用 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 重定向,但重定向的页面不显示任何内容。它显示一个空白页。

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

4

5 回答 5

8

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

于 2011-09-28T10:17:49.580 回答
1

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

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

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

除此之外,您不发送任何 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自动跟随标头,特别是对于 410 响应代码RFC 2616Location , HTTP 客户端不需要命名的响应标头。

也许您正在寻找301 Moved Permanently

于 2011-09-28T10:15:32.283 回答
1
header('Location: http://domain.com/down.php', true, 410);
exit;

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

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

但是您确定需要重定向和 4xx HTTP 状态吗?

于 2011-09-28T10:20:21.507 回答
0

尝试使用一些适当的引号?

header("HTTP/1.1 410 Gone");
header("Location: http://domain.com/down.php");
exit;
于 2011-09-28T10:14:32.533 回答
0

您必须包含错误页面:

header("HTTP/1.0 410 Gone"); include_once("410.html"); exit();
于 2016-08-31T10:33:00.703 回答