Обычно, когда в каталоге нет файла index.html, apache просто отображает страницу с надписью «Индекс / subdir» вверху и перечисляет все файлы. Как можно вместо этого отображать настраиваемую страницу ошибок? Желательно что-то, что я могу поместить в свой файл .htaccess
По умолчанию в вашей конфигурации apache будет строка конфигурации, такая как следующая:
DirectoryIndex index.html index.php index.cgi
Это определяет порядок, в котором эти файлы ищутся для представления содержимого каталога, когда этот каталог запрашивается без какой-либо части файла. Если он не найден и функция автоиндекса включена, вы получите список содержимого каталога.
Однако также можно определить абсолютный путь для DirectoryIndex
, Такие как:
DirectoryIndex index.html /default/index.html
Теперь, если в каталоге нет index.html, будет использоваться содержимое /default/index.html (относительно DocumentRoot), что, как я считаю, именно то, что вы просите.
Прежде всего: моя любимая мозоль, цитата из руководство по .htaccess файлы:
Вам следует полностью избегать использования файлов .htaccess если у вас есть доступ к файлу конфигурации главного сервера httpd. Использование файлов .htaccess замедляет работу вашего http-сервера Apache. Любую директиву, которую вы можете включить в файл .htaccess, лучше установить в блоке Directory, так как это будет иметь тот же эффект с лучшей производительностью.
Вы можете отключить генерация автоиндекса установив:
<Directory /var/www>
Options -Indexes
</Directory>
После этого посещение пустого каталога или каталогов без IndexDocument вызовет общую ошибку 403 Запрещено, а не список каталогов.
Затем вы можете настроить то, что отображается вместо этого, установив ErrorDocument
<Directory /var/www>
Options -Indexes
ErrorDocument 403 /errors/403.html
</Directory>