Новый формат
301 редиректы в .htaccess: частые правила
Файл `.htaccess` на Apache часто используют для постоянных 301: склеить зеркала, перенести URL, убрать «хвосты». Ошибка в правиле легко уронит сайт — правьте с бэкапом.
Ниже — типовые сценарии и осторожность. Теория кодов 301/302 — в статье про редирект; на nginx синтаксис другой.
Когда нужен 301
Смена ЧПУ, переезд раздела, склейка http→https и www/без www, перенос домена. Цель — один канонический адрес без цепочек.
Признаки, что пора:
- старые URL в Вебмастере с 404 после переезда;
- два зеркала в индексе;
- внешние ссылки на устаревшие пути.
Типовые правила
Включают `RewriteEngine On` и пишут условия + `RewriteRule` с флагом `[R=301,L]`. Точный синтаксис зависит от каталога и `RewriteBase`.
Примеры-идеи (не копируйте вслепую): форс https; www→без www (или наоборот); один URL страницы на новый путь; `domain-old` → `domain-new` с сохранением пути.
Перед заливкой:
- бэкап текущего `.htaccess`;
- тест на staging;
- проверка цепочек (один прыжок);
- проверка с `curl -I` или аналогом.
Когда редирект не нужен
Не гоните весь мусор на главную — размывает смысл. Не дублируйте 301 и canonical на конфликтующие URL без нужды. Не оставляйте A→B→C.
Ошибки:
- цикл редиректов;
- временный 302 навсегда;
- правка на бою без бэкапа;
- забытый HTTP после внедрения HTTPS.
Подготовьте карту переноса URL
Перед массовым переносом составьте таблицу: старый URL, новый URL, причина, тип ответа и статус проверки. В неё должны попасть важные страницы из аналитики, XML-карты, внешних ссылок и отчётов Вебмастера — не только адреса, которые легко вспомнить.
Сопоставляйте страницы по смыслу. Карточку товара переводят на замену или релевантную категорию, статью — на обновлённый материал той же темы. Если эквивалента нет, честный 404 или 410 предпочтительнее редиректа на главную.
В карте переноса укажите:
- полный старый и целевой URL;
- назначение правила — домен, раздел или отдельная страница;
- ожидаемый код 301;
- дату внедрения и результат теста.
Учитывайте порядок и контекст правил
Файл `.htaccess` обрабатывается в контексте каталога, поэтому шаблон пути и начало правила могут отличаться от конфигурации виртуального хоста. Не переносите примеры из статьи буквально, пока не проверите документ-рут, текущие правила CMS и настройку `AllowOverride`.
Сначала размещают общие правила для канонического протокола и хоста, затем — точечные переносы. Каждое условие должно быть понятным: смешанные правила для www, HTTPS, слэша и CMS без теста часто создают лишний переход или бесконечный цикл.
Особенно осторожно с:
- правилами, которые перенаправляют весь домен;
- регулярными выражениями с широким совпадением;
- дублирующими настройками в CDN или панели хостинга;
- автоматическими правилами CMS и плагинов.
Тестируйте после каждого изменения
Сначала применяйте правило на staging или на небольшой группе URL. Проверьте исходный адрес, целевой адрес, варианты с параметрами, HTTP и HTTPS, www и без www. Результатом должен быть один переход на конечную каноническую страницу.
После публикации следите за кодами ответа в краулере и Вебмастере. Исправляйте цепочки A→B→C: конечный адрес должен быть указан сразу. Не используйте постоянный редирект как временный эксперимент — браузеры и поисковые системы могут его закэшировать.
Чеклист приёмки:
- нет циклов и нескольких последовательных редиректов;
- параметры сохраняются только там, где это нужно;
- страница назначения отдаёт 200 и доступна роботам;
- важные старые URL проверены выборочно и массово.
Частые вопросы
Где лежит .htaccess?
Обычно в корне сайта (или каталоге виртуального хоста). Не на всех хостингах включён `AllowOverride`.
Подойдёт ли для nginx?
Нет как есть. На nginx пишут `return 301` / `rewrite` в конфиге сервера.
301 или 302 в примерах?
Для постоянных переносов — 301. Временные акции — 302/307.
Можно ли копировать правила «пачкой»?
Осторожно: порядок важен, легко получить цикл. Проверяйте по одному.
Редирект вместо удаления страницы?
Если есть близкий по смыслу URL — да. Если темы нет — лучше 404/410, а не «все на главную».
Как проверить код ответа?
Откройте заголовки ответа через инструменты разработчика, `curl -I` или сервис проверки. Тестируйте исходный URL без уже сохранённого браузером перенаправления.
Редиректы в .htaccess путают?
Напишем безопасные 301 без циклов — со склейкой https и переносом URL.
Обсудить задачу