请告诉我为什么这不起作用。它工作,但莫名其妙地决定停止工作。 在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中的“/”指的是我认为的网站的物理根。提前谢谢。
答案 0 :(得分:3)
我有一个类似的问题 - 当PHP抛出404标题时,Apache通常不会为它创建404页面。 (编辑:它可能与PHP是否输出任何文本有关。我还没有真正尝试过它。)如果你在浏览器中检查标题,你可以看到404标题有效,即使页面是空白的
我不确定是否有自动解决方案,但我只是制作了一个http_error($code)
函数来打印我的自定义错误页面,并且每当我的代码手动触发404时,都会调用header()
。然后我将一些代码绑定到只调用ErrorDocument
的{{1}}:
http_error
......等等。