.htaccess

.htaccess (англ. hypertext access – «доступ к гипертексту») – файл дополнительной конфигурации веб-сервера Apache, а также схожих с ним серверов. При помощи этого документа возможно указание ряда дополнительных параметров и разрешений для функционирования веб-сервера в отдельных папках. Это позволяет регулировать такие функции, как переназначение типов файлов, управление доступом к каталогам и т.д., без необходимости внесения изменений в основной конфигурационный файл.

.htaccess во многом похож на документ httpd.conf, однако его влияние распространяется на тот каталог и его дочерние папки, в котором файл размещен. Возможность применения .htaccess для той или иной директории прописывается в httpd.conf (директива AllowOverride).

AllowOverride All

Этой команде по умолчанию присваивается значение All. Когда сервер обнаруживает файл .htaccess (как задается директивой AccessFileName), ему нужно определить команды, которые отменяют установленную ранее информацию доступа. Сервер не будет читать файл .htaccess при установке директивы в None. Для доступа ко всем командам этого документа необходимо задать значение All.

Файл .htaccess может находиться в любом каталоге. Команды внутри этого документа действуют на все файлы данной папки и ее поддиректорий (если данные директивы не переопределяются командами нижележащих файлов .htaccess). Для использования таких документов .htaccess потребуются соответствующие настройки основного файла конфигурации (при этом устанавливается значение All директивы AllowOverride). Большинство хостинг-провайдеров дают разрешение на использование своих файлов .htaccess.

Пути к файлам и папкам указываются от корня сервера, например, /var/www/domain.com/htdocs/

Использование файла .htaccess

Документ подобного типа применяется для решения следующих задач:

  • Авторизация и аутентификация. При этом указываются ограничения для определенной директории. Документ .htaccess нередко связывается с файлом .htpasswd, в котором сохраняются пользовательские логины и пароли;
  • Страницы ошибок. В данном случае изменяются документы, которые выдаются при серверных ошибках, например, HTTP 404 Not Found;
  • Преобразование URL-адресов. Сервер использует .htaccess для изменения очень сложных и длинных адресов на короткие, и достаточно легко запоминающиеся;
  • Контроль кэша. Документы .htaccess помогают контролировать функцию кэширование веб-браузерами и прокси в целях уменьшения использования загрузки серверов, лагов и полосы;
  • Изменение опций веб-сервера и модулей. При этом допустимо трансформирование ряда опций посредством .htaccess, например, параметров PHP-плагина.

Примеры возможных настроек сайта при помощи .htaccess:

1. Директивы простого и сложного перенаправления (редирект и mod rewrite). Синтаксис команды Redirect выглядит так:

Redirect [status] URL_LOCAL URL_REDIRECT

status - необязательное поле, которое определяет код возврата и допустимые значения:

  • permanent (301 — документ перемещен постоянно);
  • temp (302 — документ перемещен временно);
  • seeother (303 — смотрите другой);
  • gone (410 — убран);
  • URL_LOCAL - локальная часть URL запрашиваемого документа;
  • URL_REDIRECT - URL, на который будет выполняться редирект.

2. Операции с индексными страницами. В том случае, если при просмотре файлов необходимо исключить отображение документов определенного формата, то следует прописать следующую директиву:

IndexIgnore *.php* *.pl

3. Обработка ошибок. К ним относятся:

  • 400 – Недопустимый запрос;
  • 401 – Несанкционированный;
  • 402 – Необходима оплата;
  • 403 – Запрещено;
  • 404 – Сервер не найден;
  • 405 – Метод не поддерживается;
  • 406 - Неприемлемо;
  • 407 – Необходима аутентификация прокси;
  • 408 – Время ожидания истекло;
  • 409 – Конфликт;
  • 410 – Удалено;
  • 411 – Необходима длина;
  • 412 – Условие ложно;
  • 413 – Размер запроса слишком велик;
  • 414 – Запрашиваемый URL слишком длинный;
  • 415 – Неподдерживаемый тип данных;
  • 500 – Внутренняя ошибка сервера;
  • 501 – Не выполнено;
  • 502 – Ошибочный шлюз;
  • 503 – Сервис недоступен;
  • 504 – Шлюз не отвечает;
  • 505 – Версия HTTP не поддерживается и т.д.

Переопределение страниц ошибок задается командами:

# содержание файла .htaccess:
ErrorDocument 404 http://example.com/error/404.htm
ErrorDocument 403 http://example.com/error/403.htm
ErrorDocument 400 http://example.com/error/400.htm
ErrorDocument 500 http://example.com/error/500.htm

# в случае ошибки "FORBIDDEN" показывается текстовое сообщение, которое

# обязательно должно начинаться с кавычки, кавычка в сообщении не выводится:
ErrorDocument 403 "Sorry can't allow you access today, 403 Status Codes Apache"

4. Кодировка. Этот параметр по умолчанию можно указать следующим образом:

AddDefaultCharset WINDOWS-1251

5. Управление доступом. Для блокировки ряда IP-адресов нужно выполнить такую директиву:

Order Allow,Deny
Allow from all
Deny from 10.20.30.10 10.20.30.10

6. Паролирование каталогов. При этом следует, например, прописать:

AuthName "Protected area, need authorization"
AuthType Basic
AuthUserFile /home/t/test/.authfile
require valid-user

7. Опции PHP. Синтаксис директив здесь будет следующим:

php_flag имя директивы on | off
php_value имя директивы VALUE