Веб сервер Apache имеет несколько директив (находятся в файле httpd.conf
), которые определяют, что будет показано, когда посетитель заходит в какую-то папку.
Прежде всего, это
DirectoryIndex
Она определяет, какой файл будет отправлен посетителю, если он не указал его имя явно. В параметрах этой директивы перечисляются имена файлов. Например:
DirectoryIndex index.php index.html index.htm
Приоритет имеет тот файл, который идет первым в списке. Т.е. если папка содержит index.php и index.html, то посетителю будет отправлен index.php.
Теперь небольшой пример. Допустим, сайт имеет такую структуру.
/ index.html page1.html page2.html css/ styles.css
По адресу http://sitename/
вы увидите страницу index.html
.
Но если зайти в папку css
(http://sitename/css
), то картинка будет примерно такая
Т.е. сервер покажет вам список файлов в этой папке. Не думаю, что кому-то понравится такое поведение сервера.
Исправить ситуацию можно с помощью директивы:
Options -Indexes
Примечание: символ «-
» перед словом Indexes означает, что индексирование содержимого папок запрещено.
Теперь если вы попытаетесь зайти в папку css, то увидите сообщение:
Forbidden
You don't have permission to access /css/ on this server. (у вас нет прав для доступа к /css/ на этом сервере).
При этом доступ к файлу styles.css (http://sitename/css/styles.css
) сохраняется.
Если вы не можете конфигурировать Apache (например, сайт находится на shared хостинге), то создайте в корне сайта файл .htaccess
с этой директивой.
В этом случае индексирование будет запрещено не только для корневой папки, но и для всех вложенных папок (если, конечно, они не содержат своих файлов .htaccess
).
Правда, этот метод может не работать. Дело в том, что обработка файлов .htaccess
может быть запрещена директивой AllowOverride
none (в файле httpd.conf).
В этом случае вам нужен либо доступ к httpd.conf, либо придется в каждой папке размещать файлы index.html
с каким-нибудь текстом (что-то вроде Access forbidden). Кстати, разработчики фреймворка CodeIgniter именно так и поступают (в каждой вложенной в system папке находится index.html
).
Примечание. Для того чтобы вступили в силу изменения в httpd.conf
нужно перезапустить сервер. Изменения в .htaccess
начнут работать сразу после сохранения файла.
Спонсор статьи:
Записки webмастера. Читать всем!