Рубрика: Apache » htaccess »

Листинг каталогов и .htaccess

Индексный файл или запрет вывода листинга

Если ввести в адресную строку браузера путь к папке, открывается индексный файл (например, index.html, index.php), который находится внутри этой папки, но если индексного файла в папке нет, а выдача листинга каталога не запрещена, появляется содержимое этой папки (каталога).

Исходный листинг содержимого папки test

Листинг содержимого папки test

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

# запрет выдачи листинга
Options -Indexes

Запрет распространяется на все дочерние (вложенные) папки. Поэтому, если вы хотите показать листинг файлов в какой-то папке, в ней не должно быть индексных файлов и в нее нужно поместить файл .htaccess с разрешением вывода листинга содержимого этой папки (и всех вложенных):

# разрешение выдачи листинга
Options Indexes

При этом можно запретить показывать некоторые файлы, в том числе с использованием регулярных выражений, например:

# игнорировать файлы
IndexIgnore *.php myfile*

Здесь заданы файлы с расширением .php и начинающиеся с myfile (спецсимвол * заменяет любое количество символов).

Изменение страницы листинга

Если есть желание показывать пользователям листинг файлов, выдаваемый сервером, желательно убрать из него служебную информацию и добавить стили. Добавим в файл .htaccess строчки

HeaderName HEADER.html
ReadmeName README.html

Содержимое файла HEADER.html будет выводиться перед листингом, а файла README.html - после листинга.
HEADER.html (имена этих файлов могут быть любыми):

<!DOCTYPE HTML><html><head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Листинг папки test</title></head>
<body bgcolor=#a8ecf8><h1>Файлы из папки test</h1></body></html>

README.html:

Вы можете скачать .doc-файлы и просмотреть остальные файлы

Вид листинга изменится так:

Измененный листинг

Измененный листинг

Это уже лучше, а возможности для дальнейших усовершенствований зависят от версии сервера Apache.
См. документацию: Apache Module mod_autoindex(Apache HTTP Server Version 2.2) и
Обсуждение на форуме

Опубликовано в рубрике htaccess |

2 комментария на «Листинг каталогов и .htaccess»

  1. Autor___ говорит:

    Автор, когда пишешь статью, хоть проверяй, этот код неправильный:
    # разрешение выдачи листинга
    Options Indexes

    а правильный:
    # разрешение выдачи листинга
    Options +Indexes

  2. Георгий говорит:

    Что то тут напутано

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *