【发布时间】:2011-09-13 05:32:15
【问题描述】:
我已经建立了一个动态网站并为静态 URL 修改了 .htaccess 文件,我需要为 SEO 创建一个 404 页面。
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是不存在的链接。
我错过了什么吗?
【问题讨论】:
-
您如何为 404 PHP 脚本提供服务?即使您的 PHP 脚本返回 404,Apache 也可能认为您的方法很好并记录了 200。
-
嗯,我正在检查页面顶部的数据库中是否存在链接,如果不存在,我在常规内容页面中使用 http 404 脚本并且我不更改任何元或头部除了标题之外的标签,这是正常情况吗?
-
Apache 无法检查数据库...此时您已经在执行 PHP 脚本。您如何/在哪里调用该 PHP 脚本?
-
@Onur 如果你在 Apache 下使用 FastCGI,你可以试试
header("HTTP/1.0 404 Not Found", true);甚至header("Status: 404 Not Found"); -
您确定没有在标头之前向客户端输出任何数据?一旦任何输出被发送回客户端,标头将被忽略。
标签: php http-headers http-status-code-404