Полное руководство по .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.
Автор
Alex RelFullstack Engineer
В коммерческой разработке с 2011 года — больше 15 лет. Автор двух SaaS-продуктов: TeleGo.io и LingvoHabit.com. Статьи здесь выросли из реальной клиентской и продуктовой работы.



