Глоссарий: термины .htaccess и Apache

Краткий словарь терминов, которые встречаются при работе с .htaccess и Apache. Каждое определение — в 1–2 предложения; где есть детальная страница на сайте — ссылка рядом.

Термины

Конфигурация Apache

  • .htaccess — конфигурационный файл Apache «на уровне каталога»: лежит рядом с файлами сайта, читается и парсируется Apache при каждом запросе. Подробно: справочник директив, AllowOverride.
  • httpd.conf / apache2.conf — главный конфигурационный файл Apache, загружается один раз при старте сервера. Директивы здесь быстрее .htaccess, так как не перечитываются при каждом запросе.
  • vhost (VirtualHost) — блок <VirtualHost> в конфиге Apache, описывающий настройки одного виртуального хоста (сайта). Может содержать блок <Directory> с теми же директивами, что и .htaccess.
  • AllowOverride — директива в конфиге Apache, задающая, какие классы директив разрешено использовать в .htaccess. AllowOverride All — всё разрешено; AllowOverride None.htaccess игнорируется. Подробная статья.
  • AllowOverrideList — директива Apache 2.4.9+, позволяющая точечно разрешить конкретные директивы при AllowOverride None. Подробнее.
  • DocumentRoot — каталог на диске, который Apache отдаёт как корень сайта. Apache читает .htaccess начиная с DocumentRoot и вниз до каталога запрошенного файла.

mod_rewrite

  • mod_rewrite — модуль Apache для гибкого переписывания и перенаправления URL на основе регулярных выражений. Туториал mod_rewrite.
  • RewriteEngine — директива включения mod_rewrite: RewriteEngine On. Без неё все RewriteRule и RewriteCond игнорируются.
  • RewriteRule — основная директива mod_rewrite: задаёт паттерн (регулярное выражение) и подстановку. Синтаксис: RewriteRule паттерн подстановка [флаги]. Подробно.
  • RewriteCond — условие перед RewriteRule. Если указано несколько подряд — это логическое И (если добавить флаг [OR] — ИЛИ). Подробно.
  • RewriteBase — задаёт базовый путь для относительных подстановок в mod_rewrite; нужен, когда сайт живёт в подкаталоге. Подробно.
  • Флаги RewriteRule — модификаторы поведения в квадратных скобках. Основные: [L] (last — остановить обработку правил), [R=301] (redirect), [F] (forbidden, 403), [QSA] (сохранить query-string), [NC] (no case, без учёта регистра). Полный список.
  • Серверные переменные %{…} — переменные Apache, доступные в RewriteCond: %{HTTP_HOST}, %{REQUEST_URI}, %{HTTPS}, %{QUERY_STRING}, %{HTTP_USER_AGENT} и др. Список переменных.
  • Бэкрефы $N / %N — обратные ссылки на захваченные группы: $1, $2 — из паттерна RewriteRule; %1, %2 — из паттерна последнего сработавшего RewriteCond. Подробно.

Регулярные выражения

  • PCRE (Perl Compatible Regular Expressions) — движок регулярных выражений, используемый Apache в mod_rewrite, FilesMatch, RedirectMatch и др. Тот же, что в PHP preg_*. Справочник PCRE для .htaccess.
  • regex / регулярное выражение — шаблон для сопоставления строк: якоря ^ $, классы символов [a-z], кванторы * + ?, группы захвата (…). Справочник.

mod_alias — простые редиректы

  • Redirect — директива mod_alias для простого редиректа: Redirect 301 /old /new. Не требует mod_rewrite. Рецепты редиректов.
  • RedirectMatch — то же, но с регулярным выражением: RedirectMatch 301 ^/old/(.*)$ /new/$1. Справочник.

mod_headers — HTTP-заголовки

  • Header — директива mod_headers для управления HTTP-заголовками ответа: Header set X-Frame-Options "DENY". Справочник HTTP-заголовков.
  • HSTS (HTTP Strict Transport Security) — заголовок безопасности, предписывающий браузеру всегда использовать HTTPS для данного домена. Справочник заголовков.
  • CSP (Content Security Policy) — заголовок, ограничивающий источники загрузки ресурсов (скриптов, стилей, изображений) для защиты от XSS. Справочник заголовков.
  • X-Frame-Options — заголовок, запрещающий показывать сайт во фрейме (DENY) или разрешающий только с того же домена (SAMEORIGIN). Справочник заголовков.
  • X-Robots-Tag — HTTP-заголовок, аналог мета-тега robots: управляет индексацией страницы поисковиками без изменения HTML. Справочник заголовков.
  • ETag — заголовок-идентификатор версии ресурса; браузер шлёт его обратно для условного запроса, сервер отвечает 304 если ресурс не изменился. Справочник: кэш.
  • Cache-Control — заголовок управления кэшированием: max-age=31536000, no-cache, immutable и др. Справочник: кэш.
  • Vary — заголовок, указывающий прокси-серверам, от каких заголовков запроса зависит ответ (например, Vary: Accept-Encoding). Справочник: кэш.

mod_expires / mod_deflate

  • mod_expires / ExpiresByType — модуль и директива для управления сроком жизни кэша статики по MIME-типу: ExpiresByType image/jpeg "access plus 1 year". Справочник.
  • mod_deflate / gzip — модуль для сжатия текстовых ответов (HTML, CSS, JS) на лету. Уменьшает объём трафика в 3–5 раз. Справочник.
  • Brotli (mod_brotli) — более эффективный алгоритм сжатия, альтернатива gzip. Поддерживается всеми современными браузерами; требует отдельного модуля Apache. Справочник.

Контейнеры и управление доступом

  • <FilesMatch> — контейнер, применяющий директивы к файлам, чьё имя совпадает с регулярным выражением: <FilesMatch "\.(sql|bak)$">. Справочник.
  • <IfModule> — контейнер, выполняемый только если указанный модуль загружен. Используется для безопасного использования директив, которых может не быть на сервере: <IfModule mod_rewrite.c>.
  • <RequireAll> / <RequireAny> / <RequireNone> — контейнеры Apache 2.4 для логической комбинации условий доступа. Справочник.
  • Require — директива управления доступом Apache 2.4: Require all denied, Require ip 192.168.1.0/24, Require valid-user. Заменяет старые Order/Allow/Deny. Подробно.
  • Order / Allow / Deny — директивы управления доступом Apache 2.2 (устарели в 2.4). На Apache 2.4 используйте Require. Конвертер 2.2→2.4.
  • mod_setenvif — модуль для установки переменных окружения на основе признаков запроса (User-Agent, Referer, IP). Директива: SetEnvIfNoCase User-Agent "bot" bad_bot. Справочник.

Аутентификация

  • AuthType Basic — HTTP Basic Authentication: браузер показывает диалог логин/пароль. Требует AuthUserFile с путём к .htpasswd. Подробная статья.
  • .htpasswd — файл с логинами и хэшами паролей для HTTP Basic Auth. Генератор: /htpasswd/. Подробно.

Прочие директивы

  • ErrorDocument — задаёт страницу ошибки для конкретного HTTP-кода: ErrorDocument 404 /404.html. Рецепт.
  • Options — включает/выключает функции каталога: Options -Indexes +FollowSymLinks. Значения: Indexes (листинг), FollowSymLinks, ExecCGI, Includes, MultiViews. Справочник.
  • DirectoryIndex — какой файл отдавать при запросе к каталогу: DirectoryIndex index.php index.html. Справочник.
  • .user.ini — аналог .htaccess для настроек PHP при работе через PHP-FPM (не mod_php). Содержит php.ini-директивы, применяемые к каталогу. Подробно: хостинги.
  • PHP-FPM vs mod_php — два способа запуска PHP: mod_php работает внутри Apache и поддерживает php_value/php_flag в .htaccess; PHP-FPM — отдельный процесс, php_value в .htaccess даёт 500, нужен .user.ini. Подробно.
  • CGIPassAuth — директива Apache 2.4.13+, позволяющая пробрасывать HTTP Authorization-заголовок в CGI/FastCGI-скрипты (без неё авторизационный заголовок срезается). Справочник.

Понятия

  • Фронт-контроллер — архитектурный паттерн: все запросы перенаправляются на один index.php, который маршрутизирует их внутри приложения. Реализуется через mod_rewrite в .htaccess. Примеры для CMS/фреймворков.
  • ЧПУ (человекопонятный URL) — «красивые» URL без .php и параметров: /blog/moya-statya/ вместо /index.php?id=42. Реализуется через mod_rewrite. Подробно.
  • 301 / 302 / 307 / 308 — HTTP-коды редиректа. 301 — постоянный (передаёт «вес» в SEO); 302 — временный; 307 — временный с сохранением метода; 308 — постоянный с сохранением метода. Подробно.
  • 410 Gone — HTTP-код «ресурс удалён навсегда» (в отличие от 404 «не найдено»); поисковики исключают страницу быстрее. SEO и редиректы.
  • Hotlink — встраивание ресурса (картинки) с вашего сервера на чужом сайте напрямую, с расходом вашего трафика. Блокируется через Referer в .htaccess. Подробно.
  • MIME-тип — идентификатор формата файла: text/html, image/webp, application/javascript. В .htaccess задаётся директивой AddType или ForceType. Справочник.