我正在尝试使用以下.htaccess规则锁定目录树(但允许通过图像文件)
AuthType Basic
AuthName "Test Sites. *Please Contact xxxxxxx for access.*"
AuthUserFile /home/www/testsites/.htpasswd
Require valid-user
<FilesMatch "\.(gif|jpe?g|png)$">
Satisfy Any
Allow from all
</FilesMatch>
然而,当我尝试它时,如果图像不直接位于httpdocs目录中,我仍然会被要求对图像进行身份验证。
换句话说
http://www.testsites.com/test.jpg将被允许通过,但是 http://www.testsites.com/sitename/images/test.jpg要求进行身份验证。
知道为什么会这样吗?
答案 0 :(得分:2)
尝试基于mod_setenvif
的替代方法:
SetEnvIfNoCase Request_URI "\.(gif|jpe?g|png)$" ALLOWED
AuthType Basic
AuthName "Test Sites. *Please Contact xxxxxxx for access.*"
AuthUserFile /home/www/testsites/.htpasswd
Require valid-user
Satisfy any
Order deny,allow
Deny from all
Allow from env=ALLOWED
答案 1 :(得分:1)
不确定为什么会发生这种情况,因为<Files>
和<FilesMatch>
应该应用于所有子目录。您可以尝试使用SetEnvIf
来匹配整个URI,而不是依赖apache核心来首先将URL映射到文件:
SetEnvIf Request_URI \.(gif|jpe?g|png)$ no_auth=true
AuthType Basic
AuthName "Test Sites. *Please Contact xxxxxxx for access.*"
AuthUserFile /home/www/testsites/.htpasswd
Require valid-user
Satisfy Any
Deny from All
Allow from env=no_auth