К содержанию

Главная · Блог · 301 редиректы в .htaccess: частые правила

Оставить заявку

Новый формат

301 редиректы в .htaccess: частые правила

Файл `.htaccess` на Apache часто используют для постоянных 301: склеить зеркала, перенести URL, убрать «хвосты». Ошибка в правиле легко уронит сайт — правьте с бэкапом.

Ниже — типовые сценарии и осторожность. Теория кодов 301/302 — в статье про редирект; на nginx синтаксис другой.

Поделиться
Telegram VK

Когда нужен 301

Смена ЧПУ, переезд раздела, склейка http→https и www/без www, перенос домена. Цель — один канонический адрес без цепочек.

Признаки, что пора:

  • старые URL в Вебмастере с 404 после переезда;
  • два зеркала в индексе;
  • внешние ссылки на устаревшие пути.

Редирект: 301 и 302

Проверьте себя

Мини-тест: .htaccess

Два вопроса.

1 Правила из Apache .htaccess на nginx…
2 Перед правкой на бою…

Типовые правила

Включают `RewriteEngine On` и пишут условия + `RewriteRule` с флагом `[R=301,L]`. Точный синтаксис зависит от каталога и `RewriteBase`.

Примеры-идеи (не копируйте вслепую): форс https; www→без www (или наоборот); один URL страницы на новый путь; `domain-old` → `domain-new` с сохранением пути.

Перед заливкой:

  • бэкап текущего `.htaccess`;
  • тест на staging;
  • проверка цепочек (один прыжок);
  • проверка с `curl -I` или аналогом.

Практика

Чеклист правки .htaccess

Перед заливкой на бой.

0 / 7 готово

Когда редирект не нужен

Не гоните весь мусор на главную — размывает смысл. Не дублируйте 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.

Обсудить задачу