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

Отключенная индексация каталогов Apache не применяется рекурсивно, моя конфигурация или понимание ошибочны?

Я использую Apache (2) на Debian. Я хочу отключить автоматическое индексирование в каталоге / var / www и любых его подкаталогах.

В /etc/apache2/conf.d я помещаю файл со следующим содержимым:

<Directory /var/www>
Options -Indexes
</Directory>

У меня создалось впечатление, что эта директива будет применяться рекурсивно к любым подкаталогам / var / www, но доступ, скажем, к / var / www / someotherdir (без index.html) дает мне список содержимого каталога даже после перезапуска apache (перезапуск apache2ctl).

Я неправильно понял рекурсивность здесь и мне нужно использовать файл .htaccess?

С уважением! :)

редактировать Для Интернета:

Я просмотрел свой «основной» или «корневой» файл конфигурации /etc/apache2/apache2.conf и обнаружил следующие директивы include в следующем порядке:

include mods-enabled/*.load
include mods-enabled/*.conf
include httpd.conf
include ports.conf
include conf.d/
include sites-enabled/

В то время как большинство файлов conf не содержали никакого контента, который казался относящимся к параметрам списка / var / www, каталог с поддержкой сайтов содержал файл с именем 000-default, который, в свою очередь, содержал сообщение виртуального хоста, определяя некоторые параметры для / var / www dir. Как это:

<VirtualHost *:80>
<Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

На основе директивы порядка слияния, найденной на http://httpd.apache.org/docs/current/sections.html#mergin , похоже, что моя спецификация директивы в conf.d / myfile для / var / www будет переопределена директивами sites-enabled / 000-default на основании указания на тот же каталог и директивы виртуального хоста, обрабатываемые последними.

Удаление параметра индексов из файла sites-enabled / 000-default отключило перечисление каталогов в поддереве / var / www. Так что в этом смысле все кажется логичным.

Но небольшая путаница все еще существует. Если я включу директиву для определенного каталога в свой файл conf.d / myfile, скажем / var / www / exampledir, список каталогов exampledir будет отключен независимо от содержимого директив виртуального хоста. Таким образом, может показаться, что обработанная позже директива не будет отменять более конкретную настройку, даже если она была установлена ​​ранее. Попробую привести пример:

Скажем, в виде "синтаксиса файла конфигурации псевдо-конфигурации", у меня есть следующие настройки, включенные в следующем порядке:

index off on /var/www (in my conf.d file)
index off on /var/www/exampledir (in my conf.d file)
index on in /var/www (in 000-default file)

Тогда кажется, что / var / www будет иметь "index on" во всех подкаталогах, кроме / var / www / exampledir, где директива применялась рекурсивно. Таким образом, кажется, что рекурсивная настройка в файле 000 по умолчанию не повлияет на «index on» в более раннем, более конкретно названном каталоге.

ИЛИ, если подумать, это может означать, что директивы файла конфигурации обрабатываются, как указано в ссылке на документы Apache, от самого короткого до самого длинного, но директивы виртуального хоста будут обрабатываться в последнюю очередь на указанный каталог и нет после всех других директив, не связанных с виртуальным хостом, независимо от длины (что я как бы предполагал до сих пор).

Ах, да, это, возможно, кое-что объяснит. Что ж, если кто-то дочитает до этого места, поздравляю вас и удачи нам обоим! :)

Ваши настройки верны, все должно работать так, как вы ожидали. Может быть, вы преобладаете Options -Indexes где-нибудь глубже в вашем дереве каталогов или, например, в другом vHost.

Должна быть одна команда, которая управляет всеми!

В зависимости от ОС в httpd.conf или другом файле конфигурации должно быть просто «Options All FollowSymLinks MultiViews» вместо «Options All Indexes FollowSymLinks MultiViews».

Я думаю, что, возможно, вы ищете неправильную терминологию (в лучшем случае это сложно). Это называется «Список каталогов», а не «Индексирование».