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