我header('HTTP/1.0 404 Not Found');
在代码中有一个地方,但由于某种原因它没有重定向到 Apache 的默认 404 页面。
我在 .htaccess 文件上有一个重写规则,它将每个请求重定向到 index.php。这可能是问题吗?
我header('HTTP/1.0 404 Not Found');
在代码中有一个地方,但由于某种原因它没有重定向到 Apache 的默认 404 页面。
我在 .htaccess 文件上有一个重写规则,它将每个请求重定向到 index.php。这可能是问题吗?
标题不是告诉 Apache 显示它的 404 页面的原因。相反,当Apache 显示其 404 页面时,它会同时发送一个 404 标头。标头对浏览器有意义,而不是对服务器有意义。当 Apache 找不到要显示的正确文件时,它会显示 404。由于您在 PHP 脚本中,Apache 已经找到了可以显示的文件,因此不会显示它自己的 404 页面。
在这种情况下,PHP 发送的标头只对浏览器真正重要。Apache 不会创建自己的页面,因为您已经在处理该页面,如果您发送了某些内容,两者就会发生冲突。
是的,该.htaccess
文件将阻止 Apache 显示错误页面,因为您的规则使 Apache 认为它不再有404
错误,因为它找到了要显示的页面。
发送标头实际上只是“状态消息”,不会使浏览器或服务器显示特定页面。(尽管大多数浏览器都会)。
正如 Dav 在评论中指出的那样,您需要将 404 错误发送到他们自己的自定义错误页面。