htaccess ErrorDocument 404重定向无法正常工作

时间:2011-10-05 15:37:46

标签: 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;
}

我的htaccess是

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中的“/”指的是我认为的网站的物理根。提前谢谢。

1 个答案:

答案 0 :(得分:3)

我有一个类似的问题 - 当PHP抛出404标题时,Apache通常不会为它创建404页面。 (编辑:它可能与PHP是否输出任何文本有关。我还没有真正尝试过它。)如果你在浏览器中检查标题,你可以看到404标题有效,即使页面是空白的

我不确定是否有自动解决方案,但我只是制作了一个http_error($code)函数来打印我的自定义错误页面,并且每当我的代码手动触发404时,都会调用header()。然后我将一些代码绑定到只调用ErrorDocument的{​​{1}}:

http_error

......等等。