Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';当我用php发送404头时,apache是否显示404错误?_Php_Apache_Mod Rewrite_Http Headers_Http Status Code 404 - Fatal编程技术网

为什么';当我用php发送404头时,apache是否显示404错误?

为什么';当我用php发送404头时,apache是否显示404错误?,php,apache,mod-rewrite,http-headers,http-status-code-404,Php,Apache,Mod Rewrite,Http Headers,Http Status Code 404,我有一个头('HTTP/1.0404notfound')在代码的某个地方,但由于某种原因,它没有重定向到Apache的默认404页面 我对.htaccess文件有一个重写规则,它将每个请求重定向到index.php。这可能是问题所在吗?在这种情况下,PHP发送的标题对浏览器来说才是真正重要的。Apache不会创建自己的页面,因为您已经在处理该页面,如果您发送了一些内容,这两个内容将发生冲突 是的,.htaccess文件将阻止Apache显示错误页面,因为您的规则使Apache认为它不再有404错

我有一个
头('HTTP/1.0404notfound')在代码的某个地方,但由于某种原因,它没有重定向到Apache的默认404页面


我对.htaccess文件有一个重写规则,它将每个请求重定向到index.php。这可能是问题所在吗?

在这种情况下,PHP发送的标题对浏览器来说才是真正重要的。Apache不会创建自己的页面,因为您已经在处理该页面,如果您发送了一些内容,这两个内容将发生冲突

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

发送标题实际上只是“状态消息”,不会使浏览器或服务器显示特定页面。(尽管大多数浏览器会)


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

标题不是让Apache显示其404页面的内容。相反,当Apache显示其404页面时,它会发送一个404头。标题对浏览器而不是服务器有意义。Apache在找不到合适的文件显示时会显示404。由于您使用的是PHP脚本,Apache已经找到了一个可以显示的文件,因此不会显示自己的404页面。

所以我应该重定向到自己的“未找到页面”页面?是的,如果PHP应用程序想要显示这样的消息,通常会这样做。请不要重定向。这使得纠正拼写错误变得更加困难。只需提供一个404页,并完成它。