Назад | Перейти на главную страницу

Как правильно ограничить доступ к некоторым папкам через 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

Но когда я пытаюсь получить доступ к любому файлу изображения через браузер, я получаю запрос пароля. Может ли кто-нибудь объяснить, как это исправить и в чем может быть проблема. Спасибо.

Вам просто нужно добавить satisfy Any директива каждому из FilesMatch блоки.

<FilesMatch \.(?i:gif|jpe?g|png)$>
    Order Deny,Allow
    Allow from all
    Satisfy Any    
</FilesMatch>

Order Deny,Allow означает, что deny правила обрабатываются до allow правила. Таким образом, вы получите запрос пароля.

Для любых папок и типов файлов, к которым вы хотите разрешить доступ, просто поместите приведенную ниже конфигурацию в свой .htaccess:

<FilesMatch "\.(gif|jpe?g|png)$">
    Order Allow,Deny
    Allow from all 
    Satisfy Any
</FilesMatch>