.htaccess - файл дополнительной конфигурации веб-сервера Apache. Он является подобием httpd.conf с той разницей, что действует только на каталог, в котором располагается, и на его дочерние каталоги.
Файл .htaccess может быть размещён в любом каталоге. Директивы этого файла действуют на все файлы в текущем каталоге и во всех его подкаталогах (если эти директивы не переопределены директивами нижележащих файлов .htaccess)
В этой статье мы приведём несколько примеров использования данного файла.
Собственные страницы об ошибках
Иногда возникает необходимость (например, исходя из эстетических соображений и дизайна сайта) отображать собственные страницы вместо стандартных страниц ошибок веб-сервера (404 Not Found и им подобные). Это можно осуществить через файл .htaccess:
1. Создайте свои страницы ошибок и загрузите их на сервер. Допустим, что страница для ошибки 404 будет называться 404.html
2. В файл .htaccess добавьте строку:
ErrorDocument 404 http://domain.tld/404.html
где domain.tld - имя Вашего домена
3. Аналогично следует делать и для других кодов ошибок. Например, для ошибки 500 директива должна быть:
ErrorDocument 500 http://domain.tld/500.html
Наиболее распространённые коды ошибок:
401 - требуется авторизация
400 - неверный запрос
403 - доступ запрещён
500 - внутренняя ошибка сервера
404 - страница не найдена
Запрещение листинга директории
Иногда, по тем или иным причинам, может возникнуть ситуация, когда в директории нет index файла. Например, директория служит хранилищем файлов. При запросе к подобной директории Apache будет отображать список всех файлов, которые в ней находятся. Чтобы запретить листинг, создайте в подобной директории файл .htaccess и добавьте в него строку:
Options -Indexes
Запрещение доступа по IP
Чтобы запретить доступ по HTTP (данная опция касается только HTTP протокола) к директории c определённого IP, создайте в этой директории файл .htaccess и добавьте в него строку:
Deny from xx.xx.xx.xx
где xx.xx.xx.xx - IP адрес, с которого следует запретить доступ
Также Вы можете запретить доступ для всех:
Deny from all
Запрещение доступа к определенному файлу
Чтобы запретить доступ по HTTP (данная опция касается только HTTP протокола) к директории c определённого IP, создайте в этой директории файл .htaccess и добавьте в него блок:
<Files "file.php">
Order Deny,Allow
Deny from all
Allow from xxx.xxx.xxx.xxx
</Files>
Где file.php - название файла к которому нужно ограничить доступ, а xxх.xxх.xxх.xxх - IP адрес, с которого следует разрешить доступ к указанному файлу.
Альтернативные index файлы
Если Вы хотите, чтобы индексными файлами были не только index.html, index.htm и index.php, Вы можете указать собственные имена для подобных файлов с помощью директивы DirectoryIndex, например:
DirectoryIndex index.php index.html index.htm index.shtml default.php my.php
Перенаправления (редиректы)
Если Вы хотите установить редирект для определённого URL Вашего сайта, подобное также возможно сделать с помощью .htaccess, например:
Redirect /admin/passwd.php http://www.site.ru/denied.html
Если разместить файл .htaccess с подобной директивой в корне Вашего сайта, при запросе страницы http://ваш-сайт.ру/admin/passwd.php будет осуществлено перенаправление на http://www.site.ru/denied.html
Перенаправление возможно делать как для файлов, так и для целых директорий, например:
Redirect /admin/ http://www.site.ru/denied.html
Также следует помнить, что все относительные пути в данном файле будут восприняты сервером относительно той директории, в которой находится .htaccess
Защита директорий паролем
Иногда возникает необходимость предоставить доступ к директории только определённому числу людей. В подобной ситуации наиболее рациональным вариантом является применение ограничения доступа по имени пользователя и паролю. Чтобы защитить директорию паролем, создайте в ней .htaccess файл следующего содержания:
AuthName "Section Name"
AuthType Basic
AuthUserFile /full/path/to/.htpasswd
Require valid-user
где:
AuthName - заглавие окна для ввода логина/пароля, которое откроет броузер при запросе данной директории
AuthType - тип аутентификации. В данном случае Basic.
AuthUserFile - полный путь к файлу паролей
Require - требования для успешной аутентификации. В данном случае требуются валидные имя пользователя и пароль.
Далее следует создать файл паролей, который Вы указали в директиве AuthUserFile. Данный файл должен состоять из строк формата пользователь:пароль , при этом пароль хранится в зашифрованном виде. Для генерирования содержимого файла Вы можете воспользоваться удобной утилитой, расположенной ниже.
Генератор htpasswd
.htpasswd строка
username:encryptedWithSalt
Более детально о всех директивах .htaccess Вы можете узнать на сайте разработчиков Apache: http://httpd.apache.org/docs/2.2/howto/htaccess.html