FAQ: частые вопросы про .htaccess
Короткие ответы на самые частые вопросы про .htaccess — с ссылками на детальные страницы для тех, кто хочет разобраться глубже.
Вопросы и ответы
Что такое .htaccess?
Конфигурационный файл Apache на уровне каталога: лежит рядом с файлами сайта и позволяет менять настройки сервера без доступа к главному конфигу. Читается Apache при каждом запросе. Подробно: справочник директив, глоссарий терминов.
Куда класть .htaccess?
В корень document root сайта (рядом с
index.php) — тогда он действует на весь сайт. Можно положить в любой подкаталог — тогда действует только на него и вложенные. Имя файла должно быть именно .htaccess без расширения (не .htaccess.txt). Почему файл не работает после загрузки: гид «Почему .htaccess не работает».Почему .htaccess не работает?
Главные причины: сервер — не Apache (или перед ним стоит nginx); в конфиге Apache выставлен
AllowOverride None; файл лежит не в том каталоге; синтаксическая ошибка в файле → сервер вернул 500 (смотрите error_log). Разбор симптомов: «Почему .htaccess не работает», «.htaccess на разных хостингах».Как сделать редирект?
Простой постоянный редирект:
Redirect 301 /old /new (директива mod_alias, без mod_rewrite). Если нужны массовые редиректы или паттерны — RewriteRule с флагом [R=301,L]. Готовые блоки: рецепты — редирект 301, хаб редиректов, SEO и редиректы.Чем 301 отличается от 302?
301 — постоянный редирект: браузеры и поисковики запоминают его, поисковый «вес» переносится на новый URL. 302 — временный: поисковик продолжает индексировать старый URL. Используйте 301 для переезда страниц и доменов, 302 — для временных перенаправлений. Подробно: SEO → 301 vs 302.
Как защитить папку паролем?
Три директивы:
AuthType Basic, AuthName "Закрытая зона", AuthUserFile /абсолютный/путь/.htpasswd, Require valid-user. Файл .htpasswd с логинами/хэшами генерируется онлайн: /htpasswd/. Детали: «Парольная защита».Как закрыть доступ к файлу или типу файлов?
Используйте контейнер
<FilesMatch> с директивой Require all denied: например, <FilesMatch "\.(sql|log|bak)$"> закрывает доступ к бэкапам и логам. Подробнее: «Безопасность сайта» → защита файлов.Как включить ЧПУ (красивые URL)?
Фронт-контроллер через mod_rewrite: все запросы к несуществующим файлам перенаправляются на
index.php, который маршрутизирует их внутри приложения. Для WordPress — готовый файл: /wordpress/. Туториал: «Как работает mod_rewrite», примеры для CMS: /frameworks/.Как принудительно перевести сайт на HTTPS?
Проверяем переменную и редиректим:
RewriteCond %{HTTPS} off, затем RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]. Готовый блок: рецепты → HTTPS, канонизация домена: SEO → canonical host.Тормозит ли .htaccess сайт?
Для нормального небольшого файла — нет, оверхед микроскопический. Реально медленно: гигантский файл, копии
.htaccess в каждой подпапке, широкий catch-all .* в начале правил. Подробно с замерами и советами по ускорению: «.htaccess: мифы о производительности».Чем .htaccess отличается от httpd.conf?
.htaccess — per-directory конфиг, читается при каждом запросе; что в нём разрешено — определяет директива AllowOverride в главном конфиге. httpd.conf — главный конфиг сервера, загружается один раз при старте; правила быстрее, но нужен доступ к серверу. Подробно: «AllowOverride и .htaccess vs httpd.conf».Работает ли .htaccess на nginx?
Нет. nginx не читает
.htaccess — у него другая философия: вся конфигурация только в файлах конфига сервера (server {}, location {}). Если ваш хостинг работает только на nginx, .htaccess будет просто проигнорирован. Подробно с таблицей соответствий: «.htaccess и nginx», /nginx/.Как отлаживать .htaccess?
Первым делом — смотреть
error_log (там точная строка и причина ошибки). Для трассировки mod_rewrite — LogLevel rewrite:trace3 в конфиге сервера (не в .htaccess). Онлайн-инструменты: линтер /check/, объяснялка /explain/, тестер /rewrite/. Полный гид: «Отладка .htaccess».Безопасно ли вставлять мой .htaccess в ваши инструменты?
Да — анализ статический, выполняется на сервере, ничего не сохраняем и наружу не отправляем. Исключение — инструменты, которые делают реальный запрос к вашему серверу по URL (/redirect-check/, /server-check/): они отправляют запрос к указанному вами адресу, но только по вашей явной команде.
500 после редактирования — что делать?
Откатить последнее изменение (закомментировать добавленные строки или восстановить старую версию). Открыть
error_log — там точная строка и причина (синтаксическая ошибка, директива not allowed here, несовместимость с FPM). Если используете php_value — это работает только с mod_php; на PHP-FPM нужен .user.ini. Подробно: «Почему .htaccess не работает» → 500.Как проверить синтаксис .htaccess?
Онлайн-линтер: /check/ — находит синтаксические ошибки, устаревшие директивы, директивы «не для .htaccess». На сервере — только читать
error_log после запроса; команда apachectl configtest проверяет главный конфиг Apache, но не .htaccess.Можно ли заблокировать страны или диапазоны IP?
IP-диапазоны — да:
Require ip 1.2.3.0/24 (Apache 2.4) или через Order/Allow/Deny (Apache 2.2). Блокировку по стране реализуют через GeoIP-модуль (обычно это настраивается в конфиге сервера, не в .htaccess) или через готовые списки IP-диапазонов стран. Подробно: «Безопасность» → доступ по IP, генератор.Как заблокировать ботов?
По User-Agent через
SetEnvIfNoCase User-Agent "…" bad_bot с последующим Require env !bad_bot или через RewriteRule с флагом [F]. Подробно: «Блокировка ботов», генератор, анализ логов: /log-analyze/.Как сделать свою страницу 404?
Директива
ErrorDocument: ErrorDocument 404 /404.html — путь относительно корня сайта. Можно задать любой HTTP-код: 403, 500, 410 и т.д. Готовый рецепт: рецепты → ErrorDocument, генератор: /generator/.Ссылки и инструменты
- «Почему .htaccess не работает» — 500 / 403 / 404, бесконечный редирект, файл игнорируется.
- Линтер .htaccess — проверка синтаксиса онлайн.
- Объяснялка .htaccess — разбор файла построчно.
- Тестер RewriteRule — прогнать правило на конкретном URL.
- «Отладка .htaccess» — error_log, LogLevel rewrite:trace, бинарный поиск.
- Справочник директив .htaccess — все директивы по модулям.
- Рецепты .htaccess — готовые блоки под типовые задачи.
- Глоссарий терминов .htaccess — объяснение терминов.