Запретить все в каталоге, кроме подкаталогов с определенным именем, используя.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>
Другие вопросы по тегам