Управление списком каталогов в веб-браузере с помощью htaccess - PullRequest
1 голос
/ 24 февраля 2020

Я хотел бы разрешить перечисление каталогов сервером (apache), но только для файлов, не являющихся подкаталогами (в списке должны отображаться только имена файлов.) Возможно ли это сделать с помощью директив htaccess или следует Я пишу свое заявление?

1 Ответ

0 голосов
/ 24 февраля 2020

Вы можете использовать директиву IndexIgnore для:

# Hide the link to the parent directory
IndexIgnore ..

# Hide named subdirectories
IndexIgnore subdir dir-a

Однако я не вижу, как вы можете "игнорировать" любой подкаталог, используя подстановочный синтаксис в стиле оболочки, поддерживаемый директивой IndexIgnore?

Однако вы можете использовать mod_rewrite и тот факт, что mod_autoindex выдает внутренний подзапрос для каждого ресурса в списке каталога, чтобы подавить (запретить) подкаталоги. Например:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^[\w_-]+/$ - [F]

Шаблон RewriteRule просто обеспечивает ресурс, похожий на каталог (да, запрошенный URI заканчивается в sla sh) , Условие фактически проверяет, что это каталог, перед возвратом 403 Forbidden. Этого достаточно, чтобы просто предотвратить подкаталог в списке. 403 не возвращается клиенту, это просто ответ на внутренний подзапрос.

Примечание: не блокируйте сам каталог (например, RewriteRule ^ - [F]), иначе он полностью заблокирует ваш список каталогов.

или я должен написать свое собственное приложение?

Зависит от того, сколько контроля вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...