Редиректом поиску сообщают, что адрес сменился. 301 переносит вес на новый адрес и убирает старый, 302 оставляет старый в индексе. При переезде домена меняют не только сами адреса, но и внутренние ссылки, карту сайта, канонические теги и настройки в обеих панелях вебмастера. Через полгода после переезда часть кликов все еще приходит по старым адресам. Цепочки из нескольких редиректов подряд убирают. Ошибка с 302 вместо 301 стоит трафика.
Редирект - правило на стороне сервера: при запросе одного адреса отдавать другой. Подмена проходит за долю секунды, человек ее не замечает. Поиск видит совсем другое.
Робот приходит на старый адрес и получает от сервера две вещи: код состояния и заголовок Location с новым адресом. Тела страницы в ответе нет, читать нечего. Решение робот принимает по коду.
Ответ 301 читается так: адрес сменился навсегда, перенеси на новый все накопленное, а прежний постепенно убери из выдачи. Ответ 302 - ровно наоборот: новый адрес показывай пользователю, а основным в индексе держи старый. Из этой разницы вырастают почти все ошибки с переадресацией. Человек ставит временный код на постоянный переезд и потом полгода не понимает, почему новый адрес не растет.
Серверный редирект приходит кодом ответа, поэтому робот узнает о переезде до того, как загрузит хоть один байт разметки. Переброс через `meta refresh` или скрипт работает иначе: сервер отвечает кодом 200, робот получает обычную страницу, читает тег или выполняет скрипт и только потом понимает, что его отправили дальше. Google такие переходы обрабатывает, Яндекс тоже, но оба - медленнее серверного редиректа и с меньшей уверенностью в том, что адреса надо склеить. Для переезда годится только серверный вариант.
Старый адрес не исчезает из индекса в момент, когда правило записано. Он остается известным поиску и продолжает участвовать в выдаче до тех пор, пока робот не придет на него снова и не обработает полученный код.
Код выбирают по одному признаку: вернется ли старый адрес. Вернется - временный. Нет - постоянный.
| Ситуация | Код | Почему |
|---|---|---|
| Смена домена | 301 | Старого адреса больше не будет, накопленное должно уйти на новый |
| Переезд на HTTPS | 301 | Версия по http перестает существовать как отдельная страница |
| Смена структуры адресов внутри сайта | 301 | Раздел переехал навсегда, прежний путь возвращать не планируют |
| Склейка версий со слешем на конце и без него | 301 | Две формы одного адреса сводятся к одной |
| Две похожие страницы сводятся в одну | 301 | У слабой страницы есть преемник, ее сигналы уходят ему |
| Устаревшая статья заменена новой | 301 | Тема та же, материал другой, прежний адрес не нужен |
| Страница на техобслуживании | 302 | Вернется через часы или дни, убирать из индекса нечего |
| Тест новой посадочной | 302 | По итогам теста может выиграть прежняя версия |
| Акционная страница вместо основной | 302 | Акция закончится, основная страница вернется на место |
| Переадресация по региону на время запуска | 302 | Правило снимут вместе с сезоном или тестом |
Временный код на постоянном переезде - самая дорогая ошибка. Поиск получает инструкцию «старый адрес оставь основным» и честно ее выполняет: держит его в выдаче, не переносит накопленные сигналы, а новый адрес считает подменой на пару дней. Сайт при этом выглядит рабочим. Люди попадают куда надо, отчеты не краснеют, проседают только позиции нового раздела, а связать это с кодом ответа получается далеко не сразу.
Обратная ошибка встречается реже, зато исправляется тяжелее. Постоянный код на временной посадочной сводит вместе то, что объединять не собирались: акционная страница забирает сигналы основной, а ту после снятия правила приходится возвращать в выдачу заново.
307 и 308 - те же временный и постоянный, но с сохранением метода запроса: браузер не превращает POST в GET по дороге. Для контентных страниц разница неважна, оба кода поиск читает так же, как 302 и 301 соответственно.
Проверить, что именно отдает сервер, из браузера нельзя. Переход выглядит одинаково при любом коде: адрес в строке сменился, страница открылась. Нужен инструмент, который показывает сырой ответ. Я пользуюсь Screaming Frog SEO Spider в режиме списка. Загружаете адреса, получаете колонку с кодом и колонку с конечной точкой. Полминуты работы.
Смена домена - случай, где ошибка стоит дороже всего: на кону весь трафик сайта, а не одного раздела.
Свести весь прежний сайт на главную страницу нового домена - не переезд. Такой вариант экономит пару часов работы и стоит потом квартала трафика. Поиск сравнивает содержимое исходной и конечной страницы, не находит соответствия и засчитывает мягкий 404: адрес формально отвечает, а запрошенного содержимого по нему нет. Накопленное в таком случае никуда не переносится. Интернет-магазин из Казахстана переезжает на новый домен, сваливает три тысячи карточек товара на главную - и теряет их все.
Старый домен после переезда не отключают. Регистрацию продлевают минимум на год, а лучше на два: правила должны работать все время, пока поиск помнит прежние адреса. А внешние ссылки на них держатся дольше любого разумного срока. Стоит перестать платить за прежний домен через три месяца - и разом обнуляются переадресация, ссылки из каталогов и справочников, закладки клиентов. Вернуть это можно только выкупом домена, если его не перехватили.
Домен остается, меняются пути: раздел переезжает в другую ветку, статьи расходятся по профильным кластерам. Работы меньше, чем при смене домена, а пропускают тут больше.
Порядок, который я вывел для себя после переезда одного из разделов блога:
Два последних пункта пропускают охотнее прочих, а без них работа сделана наполовину. Старый адрес, который остался в карте сайта и продолжает открываться, для поиска весомее нового: у него история и входящие ссылки.
За пределами сайта тоже остаются адреса, о которых забывают. Ссылки в шапке профиля соцсети, карточки в отраслевых каталогах, подписи в рассылках, объявления рекламных кампаний с метками. Каждая такая ссылка после смены структуры ведет через переадресацию: работать будет, но часть сигнала уйдет в переход, а разметка меток на редиректе иногда обрезается. Обновляют такие ссылки руками, за один заход.
Сюда же относится слеш на конце адреса. Если `/blog/analytics/` и `/blog/analytics` оба отдают код 200, для поиска это две разные страницы с одинаковым содержимым. Классический источник дублей, который лечится одним правилом: выбрать форму и переадресовать на нее вторую. Остальные виды дублей и случаи, когда вместо переадресации хватает canonical, собраны в отдельной статье о том, как найти и закрыть дубли страниц.
Переадресация стала стандартной реакцией на удаление: материал убрали, правило поставили, отчет чист. Работает это при одном условии - у страницы есть смысловой преемник. Статью переписали и опубликовали заново, товар заменили новой моделью, раздел стал частью другого. Тогда переадресация уместна: сигналы уходят туда, где та же тема.
Когда преемника нет, честный 404 или 410 лучше. Такой ответ быстро убирает адрес из индекса. Бюджет обхода перестает утекать впустую. Переадресация случайной страницы на главную или на ближайший по смыслу раздел только растягивает историю: поиск видит несоответствие содержимого, засчитывает мягкий 404 и все равно выкидывает адрес, но месяцами позже.
Хуже обоих вариантов третий. Правило стоит, работает, отдает код 301, а страница, на которую оно ведет, удалена. Пример с этого сайта: десять адресов свернутого раздела `/cases/` вели на страницы, которых уже не было. Конец каждой цепочки - 404 с запретом на индексацию. Правило записано, переход одиночный. Вес при этом никуда не передается, а адреса продолжают числиться в отчетах GSC.
Поверх этого лежала вторая ошибка, которая встречается едва ли не чаще первой. Восемь конечных адресов закрыли правилом Disallow в robots.txt, чтобы «убрать из индекса». Эффект получился обратный: робот перестал обходить эти адреса, а значит, не увидел, что страниц нет, и не смог убрать их из отчетов. Закрытие в robots.txt не ускоряет удаление из индекса, а тормозит его. Механику разбираю подробнее в статье про настройку robots.txt, тут достаточно правила: сначала дайте роботу увидеть 404, потом закрывайте, если это вообще нужно.
Все десять адресов перевели одним переходом на раздел-преемник, который принимает трафик и отвечает кодом 200. Восемь строк Disallow из robots.txt убрали, чтобы робот дошел до удаленных страниц и вычеркнул их сам. Вариант с 404 тоже годился, но тогда пропал бы остаточный вес входящих ссылок.
Редирект проверяют по конечной точке цепочки. Пока не открыли последний адрес и не увидели там код 200, работа не сделана.
Цепочка - это когда старый адрес ведет на промежуточный, а тот на конечный. Появляется она не за один раз. Первый переезд ставит одно правило, второй достраивает к нему звено, а прежние записи при этом никто не пересматривает.
Отчет «Индексирование страниц» на срез августа показывал у сайта 41 адрес со статусом «Страница с переадресацией». В списке одновременно лежали и корневой адрес статьи, и ее версия в промежуточном разделе. Это признак двухступенчатого переезда: сначала из корня в общую ветку, оттуда в профильную. Два перехода вместо одного тратят вдвое больше запросов робота и хуже передают вес.
Сам статус «Страница с переадресацией» ошибкой не считается. Так помечается любой известный поиску адрес, который отдает 3xx, и после переезда таких адресов становится много - это норма. Чинить надо не факт переадресации, а длину цепочки. Как читать остальные статусы отчета, разбираю в материале про то, почему страницы не попадают в индекс.
Петля - крайний случай цепочки: два адреса указывают друг на друга. Браузер показывает ошибку про слишком много переадресаций, робот получает то же самое. Страница недоступна ни человеку, ни поиску. Складывается петля из пары правил, написанных в разное время разными людьми: одно приводит адрес к форме со слешем, второе - к форме без.
Проверка ответа сервера по списку адресов покажет каждое звено с кодом. В отчете «Индексирование страниц» видно, что и корневой, и промежуточный адрес известны поиску. Полную картину сразу по всем правилам дает обход сайта настольным краулером - это единственный способ найти цепочки, о которых никто не помнит.
Чинят это переписыванием исходного правила: адрес-источник направляют сразу на конечный, промежуточные звенья убирают. Чего делать не надо - добавлять новое правило поверх старого. Так цепочка удлиняется еще на шаг, а выглядит как исправление.
Правильно поставленный редирект срабатывает не сразу. Между установкой правила и переносом сигналов проходят недели, иногда месяцы.
Цифры с моего сайта, GSC за шесть месяцев. Кластер статей про рекламу в Meta Ads переехал с `/blog/target/` на `/blog/meta-ads/`. Четыре статьи проверял вручную по последнему отрезку пути: переадресация серверная, переход один, canonical проставлен верно. К внедрению претензий нет.
| Тема материала | Показатели старого адреса | Показатели нового адреса |
|---|---|---|
| Цель Трафик | 62 клика, 5 066 показов, позиция 9,0 | 9 кликов, 1 542 показа, позиция 7,3 |
| Выбор цели кампании | 52 клика, 4 485 показов, позиция 8,4 | 27 кликов, 1 574 показа, позиция 7,8 |
| Аудитории | 18 кликов, 1 670 показов, позиция 9,8 | 9 кликов, 682 показа, позиция 16,3 |
| Анализ кампаний | 26 кликов, 1 302 показа, позиция 12,2 | 41 клик, 4 530 показов, позиция 10,1 |
По трем темам из четырех старый адрес собирает больше трафика, чем его замена, хотя отдает 301 и никакого содержимого не показывает. По переехавшему пулу счет за полгода такой: 55 старых адресов дали 785 кликов и 58 822 показа против 1 102 кликов и 120 347 показов на 176 новых. Сорок два процента кликов по этим страницам приходят на адреса, которых формально нет.
Пока обе версии в индексе, считать результат переезда по трафику нового адреса бессмысленно: почти половина кликов лежит на старом. Складывайте пару адресов в один отчет и смотрите сумму - иначе успешный переезд выглядит как провал раздела, а провал маскируется под сезонное падение.
Задержка возникает не на сервере. Поиск узнает о переадресации только тогда, когда робот придет на старый адрес. А ходит он туда редко: внутренних ссылок на старый адрес после переезда не осталось. Пока робот не пришел, правило записано на сервере, но для индекса еще не существует.
Что сокращает срок:
Что не сокращает: переустановка правила, смена кода с 301 на 302 и обратно, скрытие адреса через инструмент удаления в GSC. Последний убирает адрес из выдачи примерно на полгода, но причину не трогает: срок кончится, адрес вернется.
Задают код на стороне хостинга или CMS, и постоянный вариант там стоит не всегда. В Тильде правила лежат в настройках сайта, в разделе с доменом; пачку удобно готовить файлом CSV и заливать разом, а не вбивать пары адресов руками. Код проверяют отдельно. Панель показывает, что правило создано, но чем именно отвечает сервер - не показывает.
Через четыре-шесть недель после переобхода старые адреса должны начать терять показы. Не начали - сроки ни при чем, смотрите код ответа и canonical на новом адресе: похоже, поиск получает от сайта противоречивые сигналы.
Порядок для сайта, где переадресация уже настроена и работает непонятно как:
Первые четыре пункта закрывают большую часть историй с трафиком, потерянным после переезда. Полный список того, что смотрят на технической проверке, собран в чек-листе SEO-аудита сайта.
Google с 2016 года говорит, что переадресация 3xx не съедает PageRank сама по себе. Потери возникают из-за другого: содержимое конечной страницы не совпадает с исходным, цепочка растянута на несколько переходов или конечный адрес закрыт от индексации. При переезде один к одному и единственном звене в цепочке накопленное уходит на новый адрес почти целиком.
От нескольких дней до нескольких месяцев, и срок зависит от того, как часто робот заходит на старый адрес. Популярные страницы обрабатываются за недели, редко посещаемые - дольше. На своем сайте я вижу старые адреса в выдаче спустя полгода после верно поставленного 301. Ускоряет дело ручная отправка на переобход в GSC и Яндекс Вебмастере.
Нет. Поиск смотрит, соответствует ли конечная страница той, с которой человек пришел, и при несовпадении засчитывает мягкий 404: накопленное не переносится, адрес выпадает из индекса. Переезд делается постранично, по карте соответствия. Страницы без преемника отдают 404 или 410 - это честнее и быстрее.
Переадресация физически убирает старый адрес: пользователь на него уже не попадет. Canonical - подсказка поиску о том, какую из двух рабочих страниц считать основной, обе при этом открываются. Ориентир такой: страница не нужна никому - редирект, страница нужна пользователю, но не нужна в выдаче - canonical.
Норма - один. Googlebot идет по цепочке до десяти переходов за один обход, дальше останавливается и возвращается позже, так что формально запас есть. На деле каждое лишнее звено тратит запросы робота и размывает сигнал, а еще одно звено добавляется при следующем переезде. Два перехода - повод переписать исходное правило.
Удалять. Если страница продолжает открываться по прежнему адресу и отдавать код 200, никакой переадресации нет - есть две конкурирующие копии одного материала. Правило заменяет страницу, а не сопровождает ее. Проверить просто: откройте старый адрес и убедитесь, что вас перебросило.