
Есть ли директива для явной установки списков каталогов?без индексного файлана 403 Запрещено? Поведение по умолчанию возвращает 404, потому чтоmod_dirне могу найти индексный файл.
У меня нетmod_autoindexзагружены и Options
установлены только на FollowSymLinks
. Я пробовал -Indexes
, но это все равно вернуло 404.
<IfModule dir_module>
DirectoryIndex index.php index.html index.htm
DirectorySlash On
</IfModule>
<Directory /var/www>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Это не должно иметь значения, но я использую Apache 2.4.
решение1
Отвечаю на свой собственный вопрос после многих проб и ошибок. Этот ответ должен применяться к Apache >= 2.0.
Подводя итог, можно сказать, что Indexes
вариант директивы Options
требуетmod_autoindex. Вы можете прекратить чтение, если не хотите получить дополнительную информацию о поведении Apache по умолчанию.
Больше информации
Ключ в том, действительно лиmod_autoindexзагружен. Если он не загружен, настройка Options -Indexes
не будет иметь никакого эффекта и вернет 404, что имеет смысл, поскольку DirectoryIndex
директива mod_dir не может найти ваш индексный файл. Если он загружен, настройка Options -Indexes
вернет 403.
Это отчасти объясняется вДокументация по параметрам ApacheподИндексы, что немного сбивает с толку, поскольку Options
является частью mod_core.
Индексы
Если запрашивается URL-адрес, который сопоставляется с каталогом, а в этом каталоге нет DirectoryIndex (например, index.html), то mod_autoindex вернет отформатированный список каталога.
... и объяснил наmod_autoindexстраница:
Автоматическая генерация индекса включается с помощью Options +Indexes. Подробнее см. в директиве Options.
Мои тесты показывают, что включение/отключение файлов .htaccess AllowOverride
не имеет значения.