Apache .htaccess:ErrorDocument和RewriteEngine不能一起工作

时间:2010-03-17 10:50:35

标签: php .htaccess mod-rewrite http-status-code-404

请查看以下.htaccess

ErrorDocument 404 /404/

RewriteEngine On
RewriteRule (.*) index.php [L]

通过此设置,我在PHP中使用header('HTTP/1.1 404 Not Found');重定向到错误处理页面并发送相应的HTTP状态代码。发送了正确的404状态代码,但浏览器显示空白页面,访问日志显示"GET /invalid-url/ HTTP/1.1" 404 -

有人能告诉我如何让ErrorDocument与Apache URL重写一起工作吗?

4 个答案:

答案 0 :(得分:5)

是在重写规则

之后声明404文档

正常情况下,您的服务器不会推送任何404错误,您正在使用catchall regexp((。*))作为唯一的重写规则。

但你的问题与htaccess无关。 在PHP中,如果你发送404标题,浏览器不会自动重定向到404页面,但你必须自己在PHP中提供错误页面内容,因为大多数框架都使用内部路由系统来完成。

答案 1 :(得分:1)

我想我的问题的答案是:我不需要。 我想要完成的是“404重定向”。也就是说,在请求无效的URL时,重定向到404文档以及设置“未找到状态404”标题。 而且我不确定这是否是我想要的,因为无效的网址应该标有404状态代码,而不是重定向。

答案 2 :(得分:0)

如果在错误文档之前定义重写,它应该有效。

答案 3 :(得分:-2)

试试这个


ErrorDocument 404 /404.html

RewriteEngine On
RewriteRule (.*) index.php [L]