是否可以嵌套基本身份验证?这样,父文件夹和所有子文件夹都可以使用一个基本身份验证指令进行访问,但子文件夹需要单独的身份验证
VHost 配置:
<VirtualHost *:80>
ServerName subdomain.domain.com
#
# Comment
#
ErrorLog "/var/log/httpd/analytics_prox_error_log"
CustomLog "/var/log/httpd/analytics_prox_access_log" common
SSLProxyEngine on
SSLProxyVerify none
ProxyRequests Off
<Location />
AuthType Basic
AuthName "ProxyMain"
AuthUserFile /var/www/analytics-auth/.htpasswd
Require user datateam
Satisfy any
Deny from all
Allow from 192.168.0.0/16 10.0.0.0/8
</Location>
<Location /folder1/>
AuthType Basic
AuthName "Proxy"
AuthUserFile /var/www/analytics-auth/.htpasswd
Require user mainuser folder1user
Satisfy any
Deny from all
Allow from 192.168.0.0/16 10.0.0.0/8
</Location>
<Location /anotherfolder/>
AuthType Basic
AuthName "Proxy"
AuthUserFile /var/www/analytics-auth/.htpasswd
Require user mainuser anotherfolderuser
Satisfy any
Deny from all
Allow from 192.168.0.0/16 10.0.0.0/8
</Location>
ProxyPass / https://1.1.1.1/
ProxyPassReverse / https://1.1.1.1/
</VirtualHost>
提示输入 / 的基本身份验证对于所有子文件夹都是相同的,并且可以正常工作。(AuthMain)但是,如果我浏览到指定的文件夹(例如 folder1),我会获得根基本身份验证,而不是特定于该位置的基本身份验证
答案1
来自文档在<Location>
指令上,第一个Location
指令也匹配所有其他路径。由于您使用的是 Apache 2.4,因此您应该能够使用 进行否定匹配LocationMatch
。
<LocationMatch "^/(?!anotherfolder|folder1)">
应该管用。
答案2
这是由于 Location 中文件夹周围缺少引号造成的。为我添加双引号解决了这个问题。