Статті ·

Міграція сайту: як зібрати карту редиректів і не втратити трафік

Покроково: як зібрати старі URL, зіставити їх із новими, що робити зі сторінками без пари та які помилки коштують найдорожче.

Редизайн або переїзд на нову CMS — момент, коли сайт втрачає трафік найшвидше. Причина майже завжди одна: старі адреси перестали існувати, а редиректи або не поставили, або поставили гуртом на головну.

Хороша новина в тому, що це повністю передбачувана робота. Погана — робити її треба до релізу, а не після.

Крок 1. Зібрати старі URL

Що врахувати, щоб нічого не забути:

  • Старий sitemap.xml — основа, але там не все;
  • експорт із Search Console — сторінки, які реально приводять трафік;
  • краул старого сайту перед вимкненням — Screaming Frog або аналог;
  • лог сервера — покаже URL, на які досі ходять люди й боти, навіть якщо їх немає в sitemap;
  • сторінки із зовнішніми посиланнями — їх втрачати найдорожче.

Крок 2. Зіставити зі новими

Якщо структура не змінилась, а змінився лише префікс — це механічна заміна. Складніше, коли каталог перебудували.

Розумний порядок зіставлення — від найнадійнішого до найризикованішого:

  1. точний збіг шляху після нормалізації. Сюди ж потрапляє транслітерація: /послуги/ і /poslugy/ мають зійтися;
  2. нечіткий збіг — ловить зміни на кшталт /katalog/ /catalog/ або зникле розширення .html;
  3. смисловий — коли від старого URL лишились тільки слова. Тут потрібна перевірка очима.

Redirect Map Builder робить усі три етапи й показує, яким саме способом знайдено кожну пару та з якою впевненістю. Рядки зі способом «смисловий» — саме ті, які треба переглянути перед випуском.

Крок 3. Що робити зі сторінками без пари

Спокуса поставити все, що не зіставилось, на головну — і забути. Так робити не варто: Google трактує такий редирект як м’яку 404, а користувач, що прийшов за конкретним товаром, просто піде.

  • є близька за змістом сторінка — 301 на неї;
  • сторінку видалили назавжди — 410 Gone. Бот сприймає це як остаточне і перестає ходити швидше, ніж при 404;
  • зник цілий розділ — перевірте, чи це свідоме рішення. Часто виявляється, що просто загубили частину каталогу під час експорту.

Крок 4. Формат

nginx:

rewrite ^/katalog/instrumenty/?$ /catalog/instrumenty permanent;

Apache:

Redirect 301 /katalog/instrumenty /catalog/instrumenty

Next.js:

module.exports = {
  async redirects() {
    return [
      { source: "/katalog/instrumenty", destination: "/catalog/instrumenty", permanent: true },
    ];
  },
};

Помилки, які коштують найдорожче

Ланцюжки редиректів

Старий URL → проміжний → фінальний. Кожен зайвий крок — це втрачений час завантаження й витрачений краулінг-бюджет. Якщо на сайті вже були редиректи до міграції, після неї ланцюжки подовжуються непомітно. Ставте одразу на кінцеву адресу.

302 замість 301

302 означає «тимчасово», і сигнали старої сторінки не передаються. При міграції потрібен саме 301.

Редиректи прибрали через місяць

Тримати їх треба щонайменше рік. Бот повертається на старі адреси довго, а зовнішні посилання живуть роками.

Помилковий 301

Гірший за 404, бо ховає проблему. 404 видно у звітах, а неправильний редирект виглядає як робоча сторінка — і ви дізнаєтесь про нього, лише коли хтось поскаржиться.

Після релізу

  1. Прогнати список старих URL і переконатись, що всі віддають 301 без ланцюжків.
  2. Порівняти краул до й після — покаже сторінки, які зникли або стали неіндексованими.
  3. Перевірити robots.txt і sitemap. Найдорожча помилка релізу — Disallow: /, що приїхав зі стейджингу разом із кодом.
  4. Оновити sitemap і надіслати на переобхід.
  5. Дивитись логи перші два тижні: там одразу видно, куди бот стукає й отримує 404.