HTTP-404 标头似乎在服务器日志中不起作用



我已经建立了一个动态网站,并修改了静态URL的.htaccess文件,我需要创建一个404页面来进行SEO。

header("HTTP/1.0 404 Not Found");

当数据库中没有匹配的链接时,我使用上面的PHP header()函数,但当我检查服务器日志时,它似乎不起作用,并给出了HTTP 200 OK状态代码。

这是服务器日志中的一行:

[My IP] - - [12/Jun/2011:01:47:38 +0300] "GET /4k.html HTTP/1.1" 200 3284 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.91 Safari/534.30" 

4k.html是不存在的链路。

我是不是错过了什么?

据我所知,您正在将所有文件重写为一个PHP文件,这样PHP就可以读取它并做它需要做的事情来提供页面。这意味着Apache对404页的处理基本上将被覆盖。此时,由您的PHP文件来提供页面或显示404。据Apache所知,该请求产生了200的HTTP代码,因为在触发PHP解析脚本并将输出提供给请求它的客户端之后,它就没有发挥任何作用

在PHP脚本中,您将检查页面是否存在。如果该页面存在,则显示该页面,否则,给出404消息。通过将header("HTTP/1.0 404 Not Found", true);放在PHP文件中,当您知道它是404时,它将向客户端发送404头,因此它是正确的。为了验证它是否被正确发送,触发一个404(通过输入一个伪造的url),并在Chrome Developer工具中查看请求的详细信息,你应该在响应标题下看到你被发送了一个404,而你的Apache日志显示了一个200。

相关内容

  • 没有找到相关文章

最新更新