我正在尝试使用.htaccess 文件为一个目录设置特定的行为。
我的.htaccess如下:
ErrorDocument 401 /var/www/secret/logging.php
AuthName "My Password Protected Site"
AuthUserFile /var/www/secret/.htpasswd
AuthType Basic
Require valid-user
# Set REMOTE_USER env variable on 401 ErrorDocument
RewriteEngine On
RewriteBase /secret/
RewriteCond %{ENV:REDIRECT_STATUS} ^401$
RewriteRule .* - [E=REMOTE_USER:%{ENV:REDIRECT_REMOTE_USER}]
但是,在尝试测试这一点时,Apache 默认错误页面显示尝试使用 ErrorDocument 处理请求时遇到 404。所有权限均正确,所有文件路径均正确。
我究竟做错了什么?
答案1
正如你想要的redirect to an external URL to handle the problem/error
文档https://httpd.apache.org/docs/2.2/en/mod/core.html#errordocument
您必须设置一个 URL:
ErrorDocument 401 /secret/logging.php
否则错误重定向将尝试转到http://{yourSite}/var/www/secret/logging.php
不存在的位置并触发 404 未找到错误
答案2
问题是您在错误文档路径中使用了绝对路径。这不起作用,路径被解释为在您的DocumentRoot
视图 内https://stackoverflow.com/questions/3311411/apache-errordocument-with-absolute-path获得更多信息和解决方法。