Как я могу запретить все в каталоге, кроме любых подкаталогов с определенным именем, используя htaccess или даже vhost.conf для сайта? У меня есть защищенный основной каталог, который содержит подкаталоги. В каждом из подкаталогов есть еще один дочерний каталог с именем 'thumbs', к которому я хочу предоставить людям доступ. В папке с большими пальцами у меня есть файлы, которые начинаются с префикса thumb_ для имени файла. Итак, какой подход использовать, .htaccess FilesMatch или vhost DirectoryMatch? и какой код использовать? Спасибо
Итак, если я правильно понимаю, вам нужно разрешить только файлы с именем 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>