Статті ·
Міграція сайту: як зібрати карту редиректів і не втратити трафік
Покроково: як зібрати старі URL, зіставити їх із новими, що робити зі сторінками без пари та які помилки коштують найдорожче.
Редизайн або переїзд на нову CMS — момент, коли сайт втрачає трафік найшвидше. Причина майже завжди одна: старі адреси перестали існувати, а редиректи або не поставили, або поставили гуртом на головну.
Хороша новина в тому, що це повністю передбачувана робота. Погана — робити її треба до релізу, а не після.
Крок 1. Зібрати старі URL
Що врахувати, щоб нічого не забути:
- Старий sitemap.xml — основа, але там не все;
- експорт із Search Console — сторінки, які реально приводять трафік;
- краул старого сайту перед вимкненням — Screaming Frog або аналог;
- лог сервера — покаже URL, на які досі ходять люди й боти, навіть якщо їх немає в sitemap;
- сторінки із зовнішніми посиланнями — їх втрачати найдорожче.
Крок 2. Зіставити зі новими
Якщо структура не змінилась, а змінився лише префікс — це механічна заміна. Складніше, коли каталог перебудували.
Розумний порядок зіставлення — від найнадійнішого до найризикованішого:
- точний збіг шляху після нормалізації. Сюди ж потрапляє транслітерація:
/послуги/і/poslugy/мають зійтися; - нечіткий збіг — ловить зміни на кшталт
/katalog/→/catalog/або зникле розширення.html; - смисловий — коли від старого 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 видно у звітах, а неправильний редирект виглядає як робоча сторінка — і ви дізнаєтесь про нього, лише коли хтось поскаржиться.
Після релізу
- Прогнати список старих URL і переконатись, що всі віддають 301 без ланцюжків.
- Порівняти краул до й після — покаже сторінки, які зникли або стали неіндексованими.
- Перевірити robots.txt і sitemap. Найдорожча помилка релізу —
Disallow: /, що приїхав зі стейджингу разом із кодом. - Оновити sitemap і надіслати на переобхід.
- Дивитись логи перші два тижні: там одразу видно, куди бот стукає й отримує 404.