Apache .htaccess 404错误重定向

时间:2011-03-02 20:49:56

标签: apache .htaccess

我正在尝试创建一个htaccess文件,它将通过index.php重定向所有404错误。我希望用户无法访问的页面被附加到index.php的URL,以便我可以找出哪个页面请求失败。

例如,如果他们尝试访问http://example.com/doesntexist.php,则apache应将其重定向到http://example.com/index.php/doesntexist

这就是我所拥有的:

RewriteCond %{REQUEST_FILENAME}  !-l
RewriteCond %{REQUEST_FILENAME}  !-d
RewriteCond %{REQUEST_FILENAME}  !-f
RewriteRule .* index.php?%{QUERY_STRING} [L]

这适用于我的一个虚拟主机,但是当我将网站转移到另一个虚拟主机(GoDaddy)时失败。

谢谢你们

2 个答案:

答案 0 :(得分:5)

我现在无法测试,但根据this answer,当您设置

ErrorDocument /404.php

(或index.php,无所谓)

$_SERVER["REQUEST_URI"]变量将包含原始的失败请求。

答案 1 :(得分:0)

直接解决方案的旁注,因为这阻止了正确的ErrorDocument重定向工作。希望这可以作为任何碰巧遇到与我相同的错误的人的参考。

我创建了一个.htaccess并放了

ErrorDocument 404 /Error/404.html

但重定向永远不会起作用,而是显示默认的未找到页面 问题实际上在于apache2.conf(或httpd.conf)中的设置。

删除下面的行立即解决了问题

AllowOverride None

禁止.htaccess覆盖默认设置。