Закрываем доступ к сайту через .htaccess

Для того, чтобы ограничивать доступ к папкам/файлам при помощи файла .htaccess на web-севере Apache, его следует положить в каталог, который требуется защитить.

Защитить паролем только определенный файл:

<Files admin.php>
Require valid-user 
Authname "Protected" 
Authtype Basic 
AuthUserFile "/var/www/domain.com/.htpasswd"
</Files>

где admin.php — защищаемый паролем файл, .htpasswd — файл паролей (см. ниже).

Если необходимо защитить весь каталог сайта, создайте в этом каталоге файл .htaccess вида:

AuthType Basic
AuthName "Protected"
AuthUserFile "/var/www/domain.com/.htpasswd"
Require valid-user

Доступ только для пользователя admin:

AuthType Basic
AuthName "Protected. Only for administrator"
AuthUserFile "/var/www/domain.com/.htpasswd"
Require user admin

Доступ к файлам только с определенным расширением:

Require valid-user 
Authname "Protected" 
Authtype Basic 
AuthUserFile "/var/www/domain.com/.htpasswd"
<Files *.cfg>
Allow from all 
Satisfy any
</Files>

Доступ к файлам с несколькими расширениями:

Require valid-user 
Authname "Protected" 
Authtype Basic 
AuthUserFile "/var/www/domain.com/.htpasswd"
<FilesMatch ".(gif|bmp|tiff|swf|flv)$">
Allow from all 
Satisfy any
</FilesMatch>

.htpasswd

Файл .htpasswd — это текстовый файл паролей, который имеет следующую структуру:

user1:password
user2:password

Создается он командой

htpasswd -c -b /var/.htpasswd USERNAME PASSWORD

где ключ указывает, что необходимо создать новый файл. Если вам требуется добавить нового пользователя в этот файл, ключ необходимо убрать. Ключ -b указывает на то, чтобы пароль брался с командной строки, а не запрашивался.

По возможности файл .htpasswd лучше положить в каталог, недоступный через WWW. Если это невозможно, следует запретить к нему доступ в .htaccess:

<Files .htpasswd>
	Deny from all  
</Files>