У меня такая директивная структура:
- 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>