.htaccess позволяет задавать дифференцированные настройки для отдельных директорий не изменяя основные параметры сервера. Его синтаксис полностью идентичен httpd.conf, однако действие распространяется только на каталог с файлом и его содержимое. При этом каждая из вложенных папок может содержать собственный .htaccess, который будет переопределять команды, изложенные в вышележащих конфигурационных файлах.
Ключевые возможности .htaccess
- Указание страниц ошибок, выводимых в случае тех или иных проблем на сервере:
- Установка HTML-заглушек на время проведения технического обслуживания:
- Настройка кэширования веб-документов на уровне сервера или браузера пользователя;
- Генерация ЧПУ (человекопонятных URL) путем преобразования запросов CMS к базе данных. Реализуется посредством регулярных выражений:
- Защита директории или файла с помощью пароля (хранится в файле .htpasswd). Например, ограничение доступа к admin.php будет выглядеть так:
ErrorDocument 404 /errors/404.html
В указанном примере можно подставить любой из стандартных кодов состояния HTTP;
RewriteCond %{REMOTE_ADDR} !192.168.0.1
RewriteCond %{REMOTE_ADDR} !127.0.0.1
RewriteRule !maintenance.php$ http://www.example.com/maintenance.html [L,R=307]
Зайти на интернет-ресурс сможет только администратор с условным IP 192.168.0.1, остальным посетителям демонстрируется "заглушка" maintenance.html.
<FilesMatch "\.(gif|jpg|png|ico)$">
Header set Cache-Control "max-age=29030400, private"
</FilesMatch>
Выше задано время кэширования изображений и иконок сроком на 1 год (в секундах);
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://example.com/ [R=301,L]
Директива поможет исключить index.php из всех URL;
<Files admin.php>
AuthType basic
AuthName 'Пожалуйста, авторизуйтесь'
AuthUserFile '/home/example.com/.htpasswd'
Require valid-user
</Files>
При переходе в админку пользователь увидит окошко с надписью "Пожалуйста, авторизуйтесь" и форму для ввода логина и пароля.