我正在尝试创建一个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)时失败。
谢谢你们
答案 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覆盖默认设置。