当我用php发送404标头时,为什么apache没有显示404错误?

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页面.


Tyl*_*ter 7

在这种情况下,PHP发送的标题只对浏览器有用.Apache不会创建自己的页面,因为您已经在处理页面,如果您发送了一些内容,则两者会发生冲突.

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

发送标题实际上只是一个"状态消息",并不会使浏览器或服务器显示特定页面.(虽然大多数浏览器都会).

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

  • 是的,这通常是PHP应用程序在显示此类消息时所执行的操作. (4认同)
  • 所以我应该重定向到我自己的"找不到页面"页面? (2认同)