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