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