Проблема
Индексы, видимые в веб-браузере для каталогов, которые не содержат файл index.html или index.php.
У меня было много проблем с настройкой на httpd-сервере Scientific Linux, чтобы перестать показывать эти индексы.
Конфигурация, которая не работала
Директивы виртуального хоста httpd.conf:
<Directory /home/mydomain.com/htdocs>
Options FollowSymLinks
AllowOverride all
Require all granted
</Directory>
и добавление следующей строки в .htaccess:
Options -Indexes
Индексы каталогов все еще показывались. Настройки .htaccess не работали!
Как это могло быть, другие настройки в .htaccess работали, так почему бы не этот? Что происходит? Это должно работать! % # $ & ^ $% @ # !!
Исправление
Измените строку параметров httpd.conf на:
Options +FollowSymLinks
и перезапустите веб-сервер.
Со страницы основного мода Apache: (https://httpd.apache.org/docs/2.4/mod/core.html#options)
Параметры смешивания с + или - с параметрами без допустимого синтаксиса
и будет отклонен во время запуска сервера с помощью проверки синтаксиса с
прервать.
Индексы каталогов Voilà больше не отображаются для каталогов, которые не содержат файл index.html или index.php.
Что теперь? Новая морщина
Новые записи начали появляться в 'error_log' при попытке доступа к каталогу:
[Fri Aug 19 02:57:39.922872 2016] [autoindex:error] [pid 12479] [client aaa.bbb.ccc.ddd:xxxxx] AH01276: Cannot serve directory /home/mydomain.com/htdocs/dir-without-index-file/: No matching DirectoryIndex (index.html,index.php) found, and server-generated directory index forbidden by Options directive
Эта запись из модуля Apache 'autoindex' с LogLevel 'error', как указано [autoindex: error] сообщения об ошибке --- формат: [module_name: loglevel].
Чтобы не регистрировать эти новые записи, необходимо изменить уровень LogLevel на более высокий уровень (например, «крит»), чтобы регистрировать меньше - только более серьезные сообщения об ошибках.
Apache 2.4 LogLevels
См. Основные директивы Apache 2.4 для LogLevel .
emerg, alert, crit, error, warn, note, info, отладка, trace1, trace2, trace3, tracr4, trace5, trace6, trace7, trace8
Каждый уровень, более глубокий в списке, регистрирует все сообщения любого предыдущего уровня (уровней).
Уровень Apache 2.4 по умолчанию равен «warn». Поэтому все сообщения, классифицированные как emerg, alert, crit, error и warn, записываются в error_log.
Дополнительное исправление для остановки новых записей error_log
Добавлена следующая строка внутри .. раздела httpd.conf:
LogLevel crit
Решение 1
httpd.conf моего виртуального хоста .. конфигурация:
<Directory /home/mydomain.com/htdocs>
Options +FollowSymLinks
AllowOverride all
Require all granted
LogLevel crit
</Directory>
и добавление в /home/mydomain.com/htdocs/.htaccess корневой каталог файла .htaccess вашего веб-сайта:
Options -Indexes
Если вы не возражаете против сообщений об ошибках, пропустите
LogLevel crit
Scientific Linux - Решение 2 - Отключает mod_autoindex
Больше нет автоматического индексирования каталогов внутри вашего веб-пространства. Без изменений в .htaccess. Но нужен доступ к файлам конфигурации httpd в / etc / httpd
Отредактируйте /etc/httpd/conf.modules.d/00-base.conf и прокомментируйте строку:
LoadModule autoindex_module modules/mod_autoindex.so
добавив перед ним символ #, затем сохраните файл.
В каталоге /etc/httpd/conf.d переименуйте (mv)
sudo mv autoindex.conf autoindex.conf.<something_else>
Перезапустите httpd:
sudo httpd -k restart
или
sudo apachectl restart
Функция autoindex_mod теперь отключена.
Linux-дистрибутивы с командами ap2dismod / ap2enmod
Отключить модуль автоиндексирования, ввести команду
sudo a2dismod autoindex
для включения модуля автоиндексирования введите
sudo a2enmod autoindex