.htaccess позволяет задавать дифференцированные настройки для отдельных директорий не изменяя основные параметры сервера. Его синтаксис полностью идентичен httpd.conf, однако действие распространяется только на каталог с файлом и его содержимое. При этом каждая из вложенных папок может содержать собственный .htaccess, который будет переопределять команды, изложенные в вышележащих конфигурационных файлах.

Ключевые возможности .htaccess

  1. Указание страниц ошибок, выводимых в случае тех или иных проблем на сервере:
  2. ErrorDocument 404 /errors/404.html

    В указанном примере можно подставить любой из стандартных кодов состояния HTTP;

  3. Установка HTML-заглушек на время проведения технического обслуживания:
  4. 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.

  5. Настройка кэширования веб-документов на уровне сервера или браузера пользователя;
  6. <FilesMatch "\.(gif|jpg|png|ico)$">
    Header set Cache-Control "max-age=29030400, private"
    </FilesMatch>

    Выше задано время кэширования изображений и иконок сроком на 1 год (в секундах);

  7. Генерация ЧПУ (человекопонятных URL) путем преобразования запросов CMS к базе данных. Реализуется посредством регулярных выражений:
  8. RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/

    RewriteRule ^index\.php$ http://example.com/ [R=301,L]

    Директива поможет исключить index.php из всех URL;

  9. Защита директории или файла с помощью пароля (хранится в файле .htpasswd). Например, ограничение доступа к admin.php будет выглядеть так:

<Files admin.php>

AuthType basic

AuthName 'Пожалуйста, авторизуйтесь'

AuthUserFile '/home/example.com/.htpasswd'

Require valid-user

</Files>

При переходе в админку пользователь увидит окошко с надписью "Пожалуйста, авторизуйтесь" и форму для ввода логина и пароля.