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

Запретить все в каталоге, кроме подкаталогов с определенным именем, используя .htaccess или vhost.conf

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