Skip to content
Назад в блог

Полное руководство по .htaccess и mod_rewrite для Apache

3 мин. чтения
Полное руководство по .htaccess и mod_rewrite для Apache

Файл .htaccess (Hypertext Access) — один из самых мощных инструментов веб-разработчика и системного администратора при работе с веб-сервером Apache HTTP Server. Он позволяет гибко управлять перенаправлениями, безопасностью, кэшированием и маршрутизацией запросов на уровне отдельных папок веб-сайта.

Подарок одного инженера всему Apache (1996)

mod_rewrite — модуль, от которого зависит каждое из этих правил, — написал один-единственный разработчик, Ральф Энгельшаль (Ralf S. Engelschall), в апреле 1996 года, а в июле 1997-го передал его Apache Software Foundation. Это была не единственная его работа: двумя годами позже он же собрал mod_ssl, портировав патчи Apache-SSL от Бена Лори, чтобы Apache вообще смог говорить по HTTPS. Два модуля, без которых немыслим почти ни один .htaccess в интернете — перезапись URL и шифрование — созданы одним и тем же человеком.

Опережающая маршрутизация: модуль mod_rewrite

Сердцем .htaccess является mod_rewrite — регулярный движок перезаписи URL-адресов. Он работает по цепочке условий (RewriteCond) и правил (RewriteRule):

RewriteEngine On

# Принудительный 301 редирект на HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Скрытие расширения .php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

Флаги в квадратных скобках управляют поведением:

  • [L] (Last) — остановить обработку следующих правил, если текущее совпало.
  • [R=301] — вернуть клиенту браузерный 301 редирект.
  • [NC] (No Case) — регистронезависимая проверка.

Фундамент безопасности и производительности

1. Отключение листинга директорий (Options -Indexes)

Если в папке нет файла index.php или index.html, команда Options -Indexes предотвратит показ содержимого каталога и вернет ошибку 403 Forbidden.

2. Блокировка доступа к служебным файлам

Служебные файлы конфигурации (.env, .git, .htaccess) содержат пароли к БД и API-ключи:

<FilesMatch "^\.|\.env$|\.git">
    Order allow,deny
    Deny from all
</FilesMatch>

3. Сжатие и кэширование статики

Модули mod_deflate и mod_expires отдают CSS, JS и изображения в сжатом виде Gzip и проставляют заголовки Cache-Control / Expires:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css application/javascript application/json
</IfModule>

Возможности нашего .htaccess Builder

Инструмент .htaccess Generator & Rewrite Rule Constructor позволяет собрать чистый .htaccess за секунды:

  • HTTPS & Canonical Domain: включение 301 редиректа на HTTPS и правил добавления/удаления www.
  • Чистые URL без расширений: автоматическое скрытие .php и .html.
  • Конструктор кастомных 301 редиректов: интерактивная таблица перенаправления устаревших страниц /old-url ➔ /new-url.
  • Модули защиты и кэширования: переключатели Options -Indexes, блокировка .env/.git, сжатие mod_deflate и заголовки mod_expires.
  • Прямое скачивание: сохранение конфигурации в готовый файл .htaccess.

Быстрый старт: откройте инструмент → выберите пресет стека (WordPress, Joomla, Laravel или General) → проверьте вкладку Security & Firewall → добавьте нужные редиректы → скопируйте или скачайте файл → загрузите его в корень сайта.

Похожие инструменты

Частые вопросы

Что такое файл .htaccess и как он работает в Apache?

.htaccess (Hypertext Access) — это конфигурационный файл каталога для веб-сервера Apache HTTP Server. Он позволяет изменять параметры работы сервера (правила перезаписи URL, заголовки, права доступа) для конкретной директории без редактирования главного файла httpd.conf и без перезапуска сервера.

В чем разница между 301 и 302 редиректом?

301 (Moved Permanently) сообщает поисковым системам и браузерам, что страница навсегда переехала на новый адрес, и передает 90-99% SEO-веса (link equity). 302 (Found / Temporary Redirect) обозначает временное перенаправление и не индексируется как постоянный адрес.

Зачем нужна команда Options -Indexes?

По умолчанию, если в директории Apache нет индексного файла (index.html, index.php), сервер показывает посетителям полный список файлов и папок. Директива Options -Indexes отключает этот листинг и возвращает ошибку 403 Forbidden, предотвращая утечку исходного кода и бэкапов.

Замедляет ли .htaccess работу сервера Apache?

Да, незначительно. При каждом HTTP-запросе Apache ищет и считывает файлы .htaccess во всех родительских каталогах. На высоконагруженных продуктивных серверах рекомендуется переносить правила в главный файл конфигурации vhost и устанавливать AllowOverride None.

Автор

Fullstack Engineer

В коммерческой разработке с 2011 года — больше 15 лет. Автор двух SaaS-продуктов: TeleGo.io и LingvoHabit.com. Статьи здесь выросли из реальной клиентской и продуктовой работы.

Подробнее об автореНаписать в Telegram

Похожие статьи

GZIP VS BROTLI
GZIP VS BROTLI · '26

Как патенты на LZW привели к gzip, а веб к Brotli

История gzip, DEFLATE и Brotli, устройство двух форматов сжатия и практический выбор между размером результата, скоростью кодирования и совместимостью.

#GZip vs Brotli #история сжатия данных #Jean-loup Gailly #Brotli Google #Deflate алгоритм #LZ77 Huffman
5 мин. чтения
ФОРМАТИРОВАНИЕ RTL ТЕКСТА
ФОРМАТИРОВАНИЕ RTL ТЕКСТА · '26

Почему иврит и английский меняются местами

Как Unicode BiDi отображает иврит и арабский вместе с латиницей и кириллицей и когда использовать isolates, LRM или RLM.

#Форматирование RTL текста #Иврит и английский #Unicode BiDi controls #LRM и RLM #LRI RLI PDI #Смешанное направление текста
3 мин. чтения
СЖАТИЕ ИЗОБРАЖЕНИЙ
СЖАТИЕ ИЗОБРАЖЕНИЙ · '26

Оптимизация SVG, экспорт кода и сжатие изображений

Оптимизируйте и трансформируйте SVG, экспортируйте React, React Native, Vue, PNG или Data URI и сжимайте растровые изображения локально в браузере.

#сжатие изображений #WebP формат #оптимизация SVG #PNG vs JPEG #AVIF #SVGO
4 мин. чтения