7

header('HTTP/1.0 404 Not Found');在代码中有一个地方,但由于某种原因它没有重定向到 Apache 的默认 404 页面。

我在 .htaccess 文件上有一个重写规则,它将每个请求重定向到 index.php。这可能是问题吗?

4

2 回答 2

18

标题不是告诉 Apache 显示它的 404 页面的原因。相反,Apache 显示其 404 页面时,它会同时发送一个 404 标头。标头对浏览器有意义,而不是对服务器有意义。当 Apache 找不到要显示的正确文件时,它会显示 404。由于您在 PHP 脚本中,Apache 已经找到了可以显示的文件,因此不会显示它自己的 404 页面。

于 2009-08-07T22:52:38.253 回答
7

在这种情况下,PHP 发送的标头只对浏览器真正重要。Apache 不会创建自己的页面,因为您已经在处理该页面,如果您发送了某些内容,两者就会发生冲突。

是的,该.htaccess文件将阻止 Apache 显示错误页面,因为您的规则使 Apache 认为它不再有404错误,因为它找到了要显示的页面。

发送标头实际上只是“状态消息”,不会使浏览器或服务器显示特定页面。(尽管大多数浏览器都会)。

正如 Dav 在评论中指出的那样,您需要将 404 错误发送到他们自己的自定义错误页面。

于 2009-08-07T22:52:00.767 回答