我在维护网站时已对网站的根文件夹设置了密码保护,但我想显示自定义 401 错误页面,让人们知道网站正在建设中。不幸的是,我的网络主机不允许我对网站根文件夹之外的任何内容进行写访问,因此必须将此自定义错误页面存储在根文件夹或其子文件夹中。我没有看到自定义错误页面,而是看到了 Apache 默认错误页面,并且还显示“此外,尝试使用 ErrorDocument 处理请求时遇到 401 需要授权错误。”
我搜索了将受保护目录的子文件夹公开的方法,我所能找到的只是使用“满足任何条件”指令,但这对我来说不起作用。它也不适用于仅文件,就像下面的 .htaccess 文件一样。
#Authorization Restriction
AuthType Basic
AuthName "Access to root"
AuthUserFile *********************************
Require user ***********
Order Allow,Deny
Satisfy any
#Error Documents
ErrorDocument 401 Error-401.html
#Allow access to error documents
<Files Error-*,html>
Order Deny,Allow
Allow from all
Satisfy any
</Files>
我只能使用 .htaccess 文件;我无法访问 httpd.conf
答案1
它对我有用。但你打错了,<Files Error-*,html>
逗号应该是点:<Files Error-*.html>
在我的本地主机上它甚至不需要文件指令。但在生产服务器上我必须使用满足任何正如你所建议的。
您可以将自定义的 401 错误直接放入 ErrorDocument 中:
ErrorDocument 401 "<html>...</html>"
或者你可以用<FilesMatch>
以下方式封装你的 Auth 规则:否定401.html 文件:
<FilesMatch "^(?!401\.html$).+">
AuthType Basic
AuthName "Awe!"
AuthUserFile /full/path/to/.htpasswd
require user Lord
</FilesMatch>
ErrorDocument 401 /401.html