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