我正在自定义PHP网站中处理不可用的页面。为此,我用这一行创建了一个.htaccess文件:
ErrorDocument 404 /index.php
在index.php的开头我放置了这段代码:
header($_SERVER['SERVER_PROTOCOL'].' 200 OK', true, 200);
这在我的WAMP环境中非常有效。我正在检查http标头,它会抛出:
Status=OK - 200
但在我的Linux托管中,我总是得到:
Status=Not Found - 404
奇怪的是,PHP根本没有抛出任何错误......就像是覆盖了我的标题。
我需要更改状态代码标头,否则IE7和IE8将不会处理我的结果页面。其他浏览器可以解决这个问题。
也许我需要.htaccess或php.ini中的东西,但没有发现任何相关内容。或者,如果您知道重定向404并返回200的任何其他方法,请告诉我。
答案 0 :(得分:3)
根据您的Web服务器的配置,可以启用fast-cgi。您需要一个替代语法(如PHP文档中所示):
header("Status: 200 OK"); // for fast cgi
header($_SERVER['SERVER_PROTOCOL'] . " 200 OK");
答案 1 :(得分:2)
将不存在的页面重写为PHP文件的更好方法是:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule (.*) index.php
这使用mod_rewrite将任何不是目录而不是文件的内容更改为PHP脚本。请记住,如果您的PHP脚本收到不存在的请求,则应发送404标头。