如何通过 htaccess 正确限制对某些文件夹的访问?

如何通过 htaccess 正确限制对某些文件夹的访问?

我有这样的目录结构:

- 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>

相关内容