【发布时间】:2012-04-28 18:13:19
【问题描述】:
如果找不到请求的页面,我将使用以下代码显示 404:
if($page_exists)
{
//...
}
else
{
header('HTTP/1.0 404 Not Found', true, 404);
$ui->title = '404 Not Found';
$o .= '<h1>Not found!</h1>' . "\n";
$o .= '<p>The requested page could not be found.</p>' . "\n";
}
echo $ui->top();
echo $o;
echo $ui->bottom();
但由于某种原因,我从来没有得到我的 404 状态码——它给出的是 200。我已经检查并仔细检查了 header() 之前没有实际的输出,当我检查 PHP 错误代码时,除了一些通知之外什么都没有。我还测试了一个位置标头,但它也不起作用。
有什么想法吗?
【问题讨论】:
-
你试过
HTTP/1.1吗? -
FastCGI?尝试状态:404 未找到
-
您使用的是哪个网络服务器?您使用的是哪个 SAPI?你有在线的示例 URI 吗?
-
用
$_SERVER['SERVER_PROTOCOL']替换硬编码的HTTP/1.0并看到它有帮助。 HTTP/1.0 在恐龙时代被使用。 -
我使用的是 Apache 服务器。我尝试了 HTTP/1.1 没有成功,实际上只要我在 header() 中使用 $http_response_code 参数,它应该不会有太大的不同。
标签: php http-headers http-status-code-404