Что такое 301 и чем он отличается от 302
301 — постоянное перенаправление. Оно сообщает, что документ переехал навсегда, и поисковая система переносит на новый адрес накопленные сигналы старого. 302 — временное: старый адрес остаётся основным, и переносить ничего не нужно.
Ошибка с выбором кода — одна из самых дорогих. Постоянный переезд, оформленный как временный, приводит к тому, что в индексе долго живут оба адреса.
| Ситуация | Код |
|---|---|
| Изменился адрес страницы или структура раздела | 301 |
| Склейка www и без www, http и https | 301 |
| Товар снят с продажи навсегда, есть аналог | 301 |
| Страница временно недоступна, идут работы | 302 или 503 |
| Акция закончилась, страница вернётся | 302 |
Подготовка: таблица соответствия
До того как трогать сервер, соберите таблицу из двух колонок: старый адрес и новый. Требования к ней простые:
- один старый адрес ведёт ровно на один новый;
- новый адрес отдаёт код 200, а не сам является редиректом;
- соответствие смысловое: карточка товара ведёт на карточку, а не на главную;
- страницы без аналога отдают 404 или 410 — сваливать их в корень нельзя.
Новые адреса удобно готовить пачкой: вставьте список заголовков в пакетный режим генератора и выгрузите результат файлом.
Правила для Apache и .htaccess
На большинстве виртуальных хостингов, включая Beget, правила пишутся в файле .htaccess в корне сайта.
RewriteEngine On
# Одна конкретная страница
Redirect 301 /old-page.html /catalog/sadovye-kacheli/
# Раздел целиком с сохранением хвоста адреса
RewriteRule ^katalog/(.*)$ /catalog/$1 [R=301,L]
# Склейка www
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Порядок правил важен: они применяются сверху вниз, и первое сработавшее с флагом L прекращает обработку.
Правила для nginx
server {
location = /old-page.html {
return 301 /catalog/sadovye-kacheli/;
}
location /katalog/ {
rewrite ^/katalog/(.*)$ /catalog/$1 permanent;
}
}
Директива permanent — это и есть код 301. После правки конфигурации не забудьте перечитать её командой перезагрузки сервера.
Пять ошибок, которые стоят трафика
- Цепочки редиректов. Адрес А ведёт на Б, Б на В. Каждый лишний шаг замедляет обход и размывает сигналы. Ведите сразу на конечный адрес.
- Циклы. Правило отправляет страницу саму на себя — браузер показывает ошибку «слишком много перенаправлений».
- Массовый редирект на главную. Поисковые системы считают такое поведение мягкой ошибкой 404, а пользователь не находит того, что искал.
- Забытые внутренние ссылки. После переезда меню, карточки и карта сайта должны ссылаться на новые адреса напрямую.
- Редирект вместо canonical. Для похожих, но самостоятельных страниц нужен канонический адрес, а не перенаправление.
Проверка после переезда
- Пройдите по списку старых адресов и убедитесь, что каждый отдаёт 301 и ведёт на страницу с кодом 200.
- Проверьте, что цепочек длиннее одного шага не осталось.
- Обновите
sitemap.xmlи отправьте его на переобход. - Первые две-три недели следите за отчётом об ошибках обхода в панели вебмастера.
Просадка сразу после переезда — нормальное явление. Ненормально, если через полтора месяца старые адреса всё ещё отдают код 200 наравне с новыми: значит, редиректы не сработали.
Массовые редиректы: как не писать правила руками
Когда переезжает сотня страниц, правила удобнее генерировать из таблицы соответствия. Порядок такой:
- Соберите в таблице две колонки: старый путь и новый.
- Новые адреса подготовьте пакетным режимом генератора — по одной строке на страницу, порядок сохраняется.
- Соберите строки правил формулой в редакторе таблиц:
="Redirect 301 "&A2&" "&B2
Полученный столбец копируется в .htaccess целиком. Один нюанс: файл с тысячей правил заметно замедляет обработку каждого запроса — при таких объёмах правила лучше писать шаблонами по разделам или переносить логику на уровень приложения.
Склейка зеркал: четыре обязательных правила
До любых переездов у сайта должна быть одна каноническая версия. Проверьте все четыре варианта главной страницы — три из них обязаны отдавать 301:
| Адрес | Ожидаемый ответ |
|---|---|
http://site.ru/ | 301 → https://site.ru/ |
http://www.site.ru/ | 301 → https://site.ru/ |
https://www.site.ru/ | 301 → https://site.ru/ |
https://site.ru/ | 200 |
Если хотя бы два варианта отвечают кодом 200, сайт доступен по нескольким адресам одновременно — это классический источник дублей.
Что делать со страницами без замены
Не каждой удалённой странице есть куда вести. Разбор по ситуациям:
- Есть прямой аналог — 301 на него.
- Аналога нет, но есть родительский раздел — 301 на раздел, если он действительно закрывает потребность пользователя.
- Товар снят навсегда, замены нет — код 404 или 410 и понятная страница ошибки со ссылками на каталог.
- Товара временно нет в наличии — страница остаётся с кодом 200 и пометкой о сроках поступления.
Массовый редирект всех удалённых страниц на главную — самая частая ошибка при чистке каталога. Поисковые системы распознают такое поведение как мягкую ошибку 404, а пользователь просто не находит то, за чем пришёл.
Частые вопросы
Как долго держать 301-редиректы?
Минимум год, а лучше — постоянно. Внешние ссылки и закладки живут годами, и снятие редиректа превращает их в ошибку 404.
Передаёт ли 301 накопленные ссылочные сигналы?
Да, в этом и смысл постоянного перенаправления. Но передача не мгновенная: поисковой системе нужно переобойти старые адреса и убедиться, что переезд окончательный.
Можно ли обойтись мета-обновлением или редиректом на JavaScript?
Нежелательно. Серверный ответ 301 — самый однозначный сигнал. Клиентские способы медленнее, хуже интерпретируются и работают не во всех случаях.
Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.