我正在尝试编写一个.htaccess文件来指向并发送带有错误代码的索引。示例index.php?error404或index.php?error501。
我可以使用下面的代码在根目录中指出错误。
ErrorDocument 404 index.php?error=404
ErrorDocument 501 index.php?error=501
示例http://www.domain.com/file_does_not_exist.php,这有效。 结果http://www.domain.com/index.php?error=404
问题是捕获并从子目录发送到index.php错误。
示例http://www.domain.com/directory_does_not_exist或 http://www.domain.com/directory_and/file_does_not_exist.php
结果是http://www.domain.com/directory_does_not_exist/index.php?error=404,因此是破碎的index.php的CSS。
我尝试过以下代码但没有成功。我试图通过重写URL重定向回index.php。
RewriteCond $1 !^err[45][0-9][0-9]$
RewriteRule ^\/.\/\.php$ /index.php?s=$1 [R]
AND
RewriteCond $1 !^err[45][0-9][0-9]$
RewriteRule ^([/]?*)\.php$ /index.php?s=$1 [QSA,L]
任何帮助都将不胜感激。
答案 0 :(得分:3)
无需使用重写;只需在ErrorDocument指令中使用绝对网址(以/
开头):
ErrorDocument 404 /index.php?error=404
ErrorDocument 501 /index.php?error=501
The docs在示例中显示绝对网址:
URL可以以本地Web路径的斜杠(/)开头(相对于DocumentRoot),也可以是客户端可以解析的完整URL。或者,可以提供消息以由浏览器显示。实例::
ErrorDocument 500 http://foo.example.com/cgi-bin/tester ErrorDocument 404 /cgi-bin/bad_urls.pl ErrorDocument 401 /subscription_info.html ErrorDocument 403 "Sorry can't allow you access today"