Php htaccess错误文档404重定向不工作

Php htaccess错误文档404重定向不工作,php,.htaccess,redirect,error-handling,http-status-code-404,Php,.htaccess,Redirect,Error Handling,Http Status Code 404,请告诉我为什么这不起作用。它正在工作,但却莫名其妙地决定停止工作。 在php中,如果找不到这样的页面,我将发出404命令 if(checkPageExists($escaped_url_page_name)){ header('HTTP/1.1: 200 OK'); }else{ header("HTTP/1.0 404 Not Found"); die; } 我的访问权限是 php_flag magic_quotes_gpc Off RewriteEngine On RewriteCond

请告诉我为什么这不起作用。它正在工作,但却莫名其妙地决定停止工作。 在php中,如果找不到这样的页面,我将发出404命令

if(checkPageExists($escaped_url_page_name)){
header('HTTP/1.1: 200 OK');
}else{
header("HTTP/1.0 404 Not Found");
die;
}
我的访问权限是

php_flag magic_quotes_gpc Off

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

ErrorDocument 404 /404.php

404页面位于根目录上,名称为404.php。五分钟前是这样,但什么都没有改变,为什么这不起作用呢。我已经用fiddler测试了这个页面,它确实抛出了404,但是重定向没有发生。我已经实现了友好的URL,但我不认为这会影响它,因为htaccess中的“/”指的是我认为的站点的物理根。提前感谢。

我曾经遇到过类似的问题——当PHP抛出404头时,Apache通常不会为其生成404页面。(编辑:这可能与PHP是否输出任何文本有关。我没有做过太多的实验。)如果你检查浏览器中的标题,你可以看到404标题有效,即使页面是空白的

我不确定是否有一个自动化的解决方案,但我只是做了一个
http\u error($code)
函数,它打印我的自定义错误页面,并在我的代码手动触发404时将其与
header()
一起调用。然后我将一段代码绑定到
ErrorDocument
,它只调用
http\u error

ErrorDocument 404 index.php?http_error=404
ErrorDocument 403 index.php?http_error=403

…等等。

这是.htaccess文件中唯一的一行,还是有其他行可能影响ErrorDocument行?回答得很好,这对我很有帮助。万分感谢!!