Запретить все в каталоге, кроме подкаталогов с определенным именем, используя.htaccess или vhost.conf
Как я могу запретить все в каталоге, кроме любых подкаталогов, которые имеют определенное имя, используя htaccess или даже vhost.conf для сайта? У меня есть защищенный главный каталог, который содержит подкаталоги. В каждом из подкаталогов есть еще один дочерний каталог с именем thumbs, к которому я хочу разрешить людям доступ. В папке thumbs у меня есть файлы, которые начинаются с префикса thumb_ для имени файла. Итак, какой подход использовать.htaccess FilesMatch или vhost DirectoryMatch? и какой код использовать? Спасибо
1 ответ
Так что, если я правильно понимаю, вам нужно разрешить только файлы с именем thumb_*
если они находятся в каталоге с именем thumbs
, который находится внутри подкаталога защищенного каталога? Было бы проще не применять каталог с именем thumbs
с тех пор вам просто нужно <FilesMatch>
,
Похоже, путь, например, /path/to/protected_dir/subdir/thumbs/thumb_1.png
Если это правильно, это должно навязывать требуемые ограничения - просто убедитесь, что нет других блоков конфигурации, которые могут мешать настройкам разрешений:
<Directory /path/to/protected_dir>
Order Deny,Allow
Deny from all
</Directory>
<LocationMatch "^/url/path/to/protected_dir/[^/]+/thumbs/thumb_.*">
Allow from all
</LocationMatch>
Если вы не беспокоитесь о соблюдении точной структуры дерева каталогов, это намного проще:
<Directory /path/to/protected_dir>
Order Deny,Allow
Deny from all
<FilesMatch "^thumbs_.*">
Allow from all
</FilesMatch>
</Directory>