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

时间:2011-06-11 23:23:37

标签: php http-headers http-status-code-404

我已经构建了一个动态网站并修改了静态网址的.htaccess文件,我需要为SEO创建一个404页面。

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

当数据库中没有匹配的链接时,我正在使用上面的PHP header()函数,但是当我检查服务器日志时,似乎这不起作用并提供HTTP 200 OK状态代码。< / p>

以下是服务器日志中的行:

[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是不存在的链接。

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

据我所知,您正在将所有文件重写为单个PHP文件,以便PHP可以读取它并执行为页面提供服务所需的操作。这意味着Apache对404页面的处理基本上会被覆盖。此时,由PHP文件提供服务页面或显示404.就Apache而言,请求导致HTTP代码为200,因为它在触发PHP解析之后不会发挥任何作用。脚本并将输出提供给请求它的客户端。

在PHP脚本中,您将检查页面是否存在。如果页面存在,则显示页面,否则,给出404消息。通过将header("HTTP/1.0 404 Not Found", true);放在PHP文件中,您知道它是404,它会将404标头发送到客户端,因此它已正确完成。要验证它是否正确发送,触发404(通过输入虚假网址)并在Chrome开发者工具中查看请求详细信息,您应该在响应标题下看到您正在发送404,而您的Apache日志显示200 。