![如何通过 htaccess 正确限制对某些文件夹的访问?](https://linux22.com/image/557848/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%20htaccess%20%E6%AD%A3%E7%A1%AE%E9%99%90%E5%88%B6%E5%AF%B9%E6%9F%90%E4%BA%9B%E6%96%87%E4%BB%B6%E5%A4%B9%E7%9A%84%E8%AE%BF%E9%97%AE%EF%BC%9F.png)
我有这样的目录结构:
- www
- folder1
- folder2
- folder21
- folder22
- folder23
我允许访问所有图像文件
<FilesMatch \.(?i:gif|jpe?g|png)$>
Order Deny,Allow
Allow from all
</FilesMatch>
我允许访问特定文件夹中的所有文件
<FilesMatch /folder2/folder22/.*>
Order Deny,Allow
Allow from all
</FilesMatch>
我允许robots.txt
访问所有文件
<FilesMatch (robots\.txt)$>
Order Deny,Allow
Allow from all
</FilesMatch>
最后我添加了密码限制
AuthType Basic
AuthName "Personal use"
AuthUserFile /full/path/to/.htpasswd
Require valid-user
但是当我尝试通过浏览器访问任何图像文件时,系统都会提示输入密码。有人能解释一下如何修复它以及可能是什么问题吗?谢谢。
答案1
Order Deny,Allow
表示deny
先处理规则,再处理规则allow
。因此,您将收到密码提示。
对于您想要允许访问的任何文件夹和文件类型,只需将以下配置放入您的.htaccess
:
<FilesMatch "\.(gif|jpe?g|png)$">
Order Allow,Deny
Allow from all
Satisfy Any
</FilesMatch>
答案2
您只需satisfy Any
向每个FilesMatch
块添加一个指令。
<FilesMatch \.(?i:gif|jpe?g|png)$>
Order Deny,Allow
Allow from all
Satisfy Any
</FilesMatch>