📦Чек-лист миграции сайта без потери позиций: до, во время, после

Полный порядок переезда сайта — смена домена, протокола, структуры URL или движка. Что зафиксировать до, что проверить в день переключения и что мониторить месяц после.

редакция seodb#миграция#редиректы#301#индексация#техническое-seo#чек-лист

Миграция — самая дорогая по последствиям операция в жизни сайта. Всё остальное можно откатить: не понравился текст — переписали, сломалась разметка — починили. Неудачную миграцию тоже можно откатить, но позиции к этому моменту уже уехали, а возвращаются они не так быстро, как терялись.

При этом миграция — операция полностью формализуемая. Здесь почти нет места суждению «а как лучше»: есть последовательность шагов, и если её выполнить, ничего не теряется. Проблемы возникают ровно там, где шаг пропустили.

Ниже — порядок, который я прогоняю целиком, независимо от масштаба переезда.

Сначала: какая у вас миграция

Слово «миграция» покрывает пять разных операций с разной степенью риска.

Тип Что меняется Риск
Смена протокола (http → https) Схема в URL Низкий
Смена хостинга Только IP Низкий
Смена движка / редизайн Вёрстка, иногда URL Средний
Смена структуры URL Все адреса внутри домена Высокий
Смена домена Всё Высокий

Самое опасное — комбинация. «Заодно переедем на новый домен, поменяем CMS и почистим структуру URL» — это три миграции одновременно, и когда что-то пойдёт не так, вы не поймёте, что именно. Делайте по одной. Если очень нужно всё — разнесите на два-три месяца.

Этап 1. До переезда: зафиксировать «как было»

Смысл этапа простой: после переключения вам понадобится с чем сравнивать. Половина паники «у нас всё упало» на деле оказывается «мы не помним, как было до».

1.1. Полный список текущих URL

Выгрузить все страницы, которые сейчас в индексе. Три источника, все три нужны, потому что они не совпадают:

  • Sitemap.xml — что вы считаете своими страницами;
  • Вебмастер → «Страницы в поиске» (или API-эндпоинт search-urls/in-search/) — что Яндекс реально держит в индексе;
  • Краулер (Screaming Frog, Netpeak Spider или свой скрипт) — что реально доступно по ссылкам.

Разница между этими тремя списками — уже полезная информация. Страницы, которые есть в индексе, но которых нет в sitemap, при миграции потеряются тише всего, а трафик они приносили.

1.2. Снимок позиций и трафика

  • Позиции по ядру — выгрузка на день до переезда;
  • Трафик за 3 месяца помесячно и за 4 недели понедельно — из Метрики;
  • Топ-100 страниц по трафику — отдельным списком, это ваш приоритет при проверке после.

1.3. Снимок технического состояния

  • robots.txt — сохранить текущий файл;
  • Карта редиректов, которые уже стоят (они могут сложиться в цепочку с новыми);
  • Скорость: LCP/INP/CLS по ключевым шаблонам страниц — чтобы потом не гадать, замедлился ли сайт;
  • Разметка Schema.org — какие типы где стоят.

1.4. Карта соответствия URL — главный артефакт

Таблица из двух колонок: старый URL → новый URL. Для каждой страницы из списка 1.1.

Правила, которые экономят месяцы:

  • 1:1 везде, где возможно. Каждая старая страница → одна конкретная новая. Не «всё на главную».
  • Массовый редирект на главную — худшее из решений. Поисковик трактует такой редирект как soft-404: страница не переехала, она исчезла. Весь накопленный вес теряется.
  • Если новой страницы нет — редирект на ближайший по смыслу раздел. Если и его нет — честный 410 Gone, а не 404 и не редирект в никуда.
  • Никаких цепочек. Старый URL → новый, одним переходом. Не старый → промежуточный → новый.
  • Проверить таблицу на дубли и петли до переключения, а не после.

Для крупного сайта карта строится правилами (регулярками), но проверять всё равно нужно на выборке: взять 50 случайных URL и прогнать вручную.

Этап 2. Подготовка нового сайта — до переключения

Новый сайт должен быть полностью готов до того, как на него пойдёт трафик. Не «запустим и допилим».

  • Тестовый контур закрыт от индексации. Не через robots.txt — через HTTP-аутентификацию. Disallow на стенде не мешает роботу узнать о URL, а вот попадание стенда в индекс — реальная и частая беда;
  • Проверить, что noindex со стенда не уехал в прод. Это классика: <meta name="robots" content="noindex"> в шаблоне, который забыли переключить. Отдельный пункт чек-листа именно потому, что стоит дорого;
  • Canonical указывают на новый домен, а не остались на старом;
  • Sitemap.xml нового сайта собран и содержит только новые URL;
  • Внутренние ссылки переписаны на новые адреса. Не оставляйте их на старые в расчёте на редиректы: это создаёт цепочку на каждом клике и жрёт краулинговый бюджет;
  • Разметка перенесена, включая @id — если идентификаторы сущностей завязаны на домен, их надо обновить согласованно во всех местах;
  • Аналитика стоит и проверена — счётчики Метрики и Google Analytics, цели, электронная коммерция;
  • Скорость не хуже, чем была. Замер на стенде до переключения.

Этап 3. День переключения

Порядок операций имеет значение.

  1. Поднять 301-редиректы по карте соответствия. Именно 301 (постоянный), не 302. 302 говорит «я вернусь», и вес не передаётся.
  2. Проверить редиректы на выборке — минимум топ-100 страниц по трафику плюс 50 случайных. Проверять curl -sIL, смотреть всю цепочку, а не только конечный код.
  3. Открыть новый сайт для индексации — снять HTTP-аутентификацию, проверить robots.txt.
  4. Отправить sitemap нового сайта в Вебмастер и Search Console.
  5. В Яндекс.Вебмастере — «Переезд сайта» (Настройки → Переезд сайта). Это отдельный официальный механизм, он ускоряет склейку. При смене домена — обязательный шаг, который часто пропускают.
  6. В Google Search Console — «Изменение адреса» (Настройки → Изменение адреса). Аналогично.
  7. Не трогать старый домен. Он должен остаться зарегистрированным и отдавать редиректы минимум год. Год — не перестраховка: часть ссылок и часть индекса живут именно столько.
  8. Отправить ключевые URL на переобход — новую главную, разделы, топ-страницы. Через recrawl/queue API, помня про суточную квоту.

Быстрая проверка редиректов

while read url; do
  printf "%s -> " "$url"
  curl -sIL -o /dev/null -w "%{num_redirects} redirects, final %{http_code}, %{url_effective}\n" "$url"
done < old_urls.txt

Что должно получиться: 1 redirects, final 200. Двойка в числе редиректов — цепочка, чинить. final 404 — дыра в карте. final 200 при нуле редиректов на старом URL — редирект не поднялся вообще.

Этап 4. Первая неделя после

Здесь главное — не паниковать и не дёргать.

Что нормально:

  • Проседание позиций на 10–30% в первые 1–2 недели. Это ожидаемо при любой миграции с изменением URL. Поисковику нужно переобойти и переиндексировать сайт;
  • Временный рост числа 404 в Вебмастере — робот ходит по старым адресам, которых уже нет в sitemap;
  • Расхождение числа страниц в индексе: старые ещё не выпали, новые ещё не вошли.

Что ненормально и требует вмешательства:

  • Позиции упали больше чем на половину;
  • В индекс попал тестовый домен;
  • Массовые 5xx в истории обхода;
  • Редиректы отдают 302 вместо 301;
  • Индекс нового домена не растёт вообще спустя неделю.

Что мониторить ежедневно:

  • Диагностика в Вебмастере — FATAL/CRITICAL;
  • История обхода — доля не-200 ответов;
  • Страницы в поиске — по обоим доменам;
  • Трафик по дням, в сравнении с прошлым месяцем.

Все четыре пункта закрываются одним скриптом на API Вебмастера — на время миграции это особенно окупается.

Этап 5. Месяц спустя — разбор

  • Сравнить позиции с предмиграционным снимком по всему ядру;
  • Найти страницы, которые не восстановились, и проверить каждую руками: правильный ли редирект, есть ли на неё внутренние ссылки, нет ли дубля;
  • Проверить, что старые URL исчезают из индекса, а новые появляются — процесс должен быть виден на графике;
  • Проверить внешние ссылки: часть площадок можно попросить обновить ссылку на новый адрес. Прямая ссылка сильнее ссылки через редирект;
  • Проверить скорость на живом трафике, а не на стенде.

Полное восстановление после корректной миграции — от двух недель до трёх месяцев в зависимости от размера сайта. Если через три месяца не восстановилось — дело не в миграции, ищите причину отдельно.

Пять ошибок, которые встречаются чаще всего

  1. Редирект всего на главную. Убивает вес всех страниц разом. Всегда 1:1.
  2. 302 вместо 301. Одна цифра в конфиге, месяцы потерянного веса.
  3. noindex уехал со стенда в прод. Сайт исчезает из индекса целиком за считанные дни.
  4. Старый домен отпустили. Через полгода после переезда домен освобождается, редиректы умирают, накопленные ссылки указывают в пустоту.
  5. Миграция «заодно». Смена домена + смена структуры + редизайн в один день. Когда упадёт, причину не найти.

Итог

Миграция — это операция, где вся работа делается до переключения. Карта соответствия URL, снимок «как было», проверенные редиректы на стенде. Сам день переезда должен быть скучным: подняли конфиг, прогнали проверку, отправили sitemap.

Если день переезда получился интересным — значит, подготовку пропустили.