Защита директорий паролем через .htaccess и .htpasswd

Логотип HTTP-сервера ApacheНебольшая заметка на память как быстро организовать надежную защиту доступа к файлам и папкам на сервере под управлением HTTP-сервера Apache посредством авторизации.

В итоге доступ к листингу содержимого папок имеют конкретные юзеры определенные в файле .htaccess по логину и паролю определенным в файле .htpasswd.

Тестовая структура каталогов

folder1
|
pass
|
folder2
|  |
|  +-folder4
|
folder3

Папки 1-3 содержать нужные файлы, в папке pass лежит файл .htpasswd с паролями.
Также в каждой папке (кроме корневой) лежит файл .htaccess с примерно таким содержимым:

AuthName "Зона с ограниченным доступом. Restricted area."
AuthType Basic
AuthUserFile /var/www/pass/.htpasswd
Require user user1 user2 user3

Для разрешения просмотра соответствующим юзерам (либо с «Require valid-user» для всех существующих в .htpasswd юзеров).
Также в корневой .htaccess следует добавить строчку: Options +Indexes, что разрешит листинг этой и вложенных папок, а вцелом он может выглядеть так:

Options +Indexes
DirectoryIndex index.html
AddDefaultCharset Windows-1251
IndexOptions Charset=Windows-1251

Index.html в данном случае можно использовать для организации навигации по папкам:

<html>
<title>
Навигация по папкам
</title>
<body>
<h1>Список папок с доступом по паролю</h1>
<a href="folder1">folder1</a><br>
<a href="folder2/folder4">folder2</a><br>
</body>
</html>

Регистр имеет значение!

Генерация паролей для .htpasswd

Для генерации паролей можно воспользоваться программой «Encode UNIX Passwords».

Заметка не претендует на энциклопедическую правильность, корректировки в комментариях приветствуются.

1 Комментарий

  • 21.04.2012 Zikest:

    Спасибо, Я хочу сделать страницу с файлами на сайте, и не знал как правильно защитить дирректорию, нигде не могу найти, а тут всё подробно. Спасибо!


Добавление комментария:

 css.php