Ми використовуємо cookie-файли, щоб покращити ваш досвід, аналізувати трафік сайту та персоналізувати вміст. Ви можете прийняти всі cookie або обрати, які категорії дозволити. Дізнатися більше
Перенаправлення в електронній комерції: 301, 410, Історія слуг та уникнення ланцюгів (2026) | Ordiko
Посібник
Перенаправлення в електронній комерції: 301, 410, Історія слуг та уникнення ланцюгів (2026)
Коли використовувати 301 проти 410 проти інших кодів статусу HTTP для змін URL електронної комерції, як відстежувати історію слуг, виявляти ланцюги перенаправлень та уникати поширених пасток, які шкодять SEO.
PT45M
TL;DR. Редиректи в електронній комерції стосуються збереження SEO-капіталу через зміни URL. Використовуйте 301 для постійних переміщень (виправлення слуг, ребрендинг). Використовуйте 410 для постійних видалень. Відстежуйте історію слуг для кожної сутності, щоб старі URL автоматично перенаправляли. Виявляйте та спрощуйте ланцюги щотижня. Відображайте відсутні сторінки з корисним контентом, а не загальним 404.
HTTP статус-коди для електронної комерції
Код
Назва
Значення
Сценарій використання
200
OK
Сторінка існує
Звичайна сторінка продукту/категорії
301
Переміщено назавжди
Використовуйте новий URL назавжди
Зміни слуг, ребрендинг, міграції доменів
302
Знайдено
Тимчасове перенаправлення
A/B тести, гео-редиректи, тимчасові збої
307
Тимчасове перенаправлення
Те ж саме, що 302, але зберігає метод
Поширені запитання
Яка практична різниця між 301 та 302?
301 = постійний. Передає майже весь рівень посилань. Інтенсивно кешує перенаправлення. Використовуйте для змін слуг, міграцій доменів. 302 = тимчасовий. Передає менше рівня. Не кешує так агресивно. Використовуйте для A/B тестів або тимчасових збоїв. Для більшості перенаправлень електронної комерції 301 є правильним.
Яка різниця між 404 та 410?
404 = 'не знайдено, може повернутися'. Google може зберігати URL в своєму індексі деякий час на випадок, якщо він повернеться. 410 = 'зник, постійно видалений'. Google швидше видаляє URL. Для постійно знятих продуктів 410 є кращою гігієною SEO.
Скільки переходів перенаправлення занадто багато?
Два переходи - це практичний ліміт. Кожен перехід втрачає 5–10% рівня посилань і додає затримку. Три або більше переходів - це сигнал. Виявляйте та спростіть їх автоматично.
Як Ordiko обробляє історію слуг?
Кожна таблиця сутності має відповідну таблицю історії слуг (наприклад, product_slug_history). При зміні слугу новий рядок вставляється зі старим слугом; 301 перенаправлення автоматично записується в storeRedirects. Завдання Trigger.dev щотижня перевіряє ланцюги перенаправлень, HEAD-trace перенаправлення та позначає ланцюги та зламані цілі.
Схоже для читання
API редиректи з POST
308
Постійне перенаправлення
Те ж саме, що 301, але зберігає метод
API редиректи з POST
404
Не знайдено
Сторінка не існує, може повернутися
Помилки, неправильно запам'ятовані URL
410
Відсутній
Постійно видалено
Припинені продукти, видалений контент
Для електронної комерції загальною парою є 301 для переміщень і 410 для постійних видалень.
Пропонувати подібні продукти (використовуйте pgvector cosine на векторі відсутньої сутності).
Мати поле для пошуку.
Мати чітке повідомлення "цей продукт більше не доступний".
Історія слуг для кожної сутності
Коли слуг продукту змінюється, старий URL повинен перенаправляти на новий URL. Зберігати це вручну ненадійно. Відстежуйте історію слуг для кожної сутності:
CREATE TABLE product_slug_history (
id SERIAL PRIMARY KEY,
product_id UUID NOT NULL,
old_slug TEXT NOT NULL,
new_slug TEXT NOT NULL,
changed_at TIMESTAMPTZ DEFAULT NOW()
);
Таблиця історії слуг дозволяє відстежувати еволюцію URL продукту (корисно для підтримки та юридичних/комплаєнс архівів).
Ланцюги редиректів
Ланцюг: A → B → C.
Чому ланцюги погані:
Кожен перехід втрачає 5–10% капіталу посилань (Google це підтвердив).
Кожен перехід додає 100–500 мс затримки.
Три або більше переходів збільшують ймовірність того, що Google перестане відстежувати.
Виявлення: HEAD-трасування кожного редиректу щотижня.
async function traceRedirect(url: string, hops: number = 0): Promise<{ finalUrl: string; chainLength: number }> {
if (hops > 5) return { finalUrl: url, chainLength: hops }; // захист від циклів
const res = await fetch(url, { method: 'HEAD', redirect: 'manual' });
if (res.status >= 300 && res.status < 400) {
const location = res.headers.get('location');
if (!location) return { finalUrl: url, chainLength: hops };
return traceRedirect(location, hops + 1);
}
return { finalUrl: url, chainLength: hops };
}
Спрощуйте ланцюги: перепишіть джерело, щоб воно вказувало безпосередньо на фінальний URL.
// Перед: A → B → C
await db.redirects.update({ from: '/a', to: '/b' }); // існуючий
// Після спрощення:
await db.redirects.update({ from: '/a', to: '/c' }); // переписано
Цикли редиректів
A → B → A є фатальним. Виявляйте під час запису:
async function writeRedirect(from: string, to: string) {
const wouldLoop = await detectLoop(from, to);
if (wouldLoop) {
throw new Error(`Редирект з ${from} на ${to} створює цикл`);
}
await db.redirects.insert({ from, to, statusCode: 301 });
}
Пінг IndexNow
Після запису редиректу:
await enqueueIndexNow([oldUrl, newUrl]);
Двигун повторно отримує старий URL, бачить 301 і оновлює свій індекс.
Найкращі практики
Тримайте таблицю редиректів компактною. З часом десятки невеликих редагувань слуг створюють десятки редиректів. Періодично спрощуйте ланцюги.
Не перенаправляйте цілі категорії на домашню сторінку. Це "м'який 404" для Google. Перенаправляйте на найближчу еквівалентну категорію.
Уникайте перенаправлення на сторінки noindex. Це суперечить меті збереження капіталу.
Документуйте наміри редиректу. Коментар до стовпця в таблиці редиректів допомагає майбутньому вам зрозуміти чому.
Як Ordiko обробляє редиректи
Таблиця storeRedirects з колонками from, to, statusCode, tenant.
Історія слуг для кожної сутності: productSlugHistory, categorySlugHistory тощо.
Автоматичний запис 301 при зміні слугу.
productLifecycle.archive() записує рядок 410 у storeRedirects.
Шар шляхів відсутності відображає /products/[slug]/gone з рекомендаціями подібності.
Завдання Trigger.dev щотижня redirect-chain-verify.task.ts HEAD-трасує кожен редирект і позначає ланцюги та зламані цілі.
Одноклікове "Спростити ланцюг" переписує A → C безпосередньо.
Пінги IndexNow при кожному створенні редиректу.
FAQ
Яка практична різниця між 301 і 302? 301 = постійний. Передає майже весь капітал посилань. Інтенсивно кешує редирект. Використовуйте для змін слуг, міграцій доменів. 302 = тимчасовий. Передає менше капіталу. Не кешує так агресивно. Використовуйте для A/B тестів або тимчасових збоїв. Для більшості редиректів в електронній комерції 301 є правильним.
Яка різниця між 404 і 410? 404 = 'не знайдено, може повернутися'. Google може зберігати URL в своєму індексі деякий час на випадок, якщо він повернеться. 410 = 'відсутній, постійно видалено'. Google швидше видаляє URL. Для постійно припинених продуктів 410 є кращою гігієною SEO.
Скільки переходів редиректу занадто багато? Два переходи — це практичний ліміт. Кожен перехід втрачає 5–10% капіталу посилань і додає затримку. Три або більше переходів — це сигнал. Виявляйте та спрощуйте їх автоматично.
Як Ordiko обробляє історію слуг? Кожна таблиця сутності має відповідну таблицю історії слуг (наприклад, product_slug_history). При зміні слугу новий рядок вставляється зі старим слугом; 301 редирект автоматично записується в storeRedirects. Завдання Trigger.dev щотижня redirect-chain-verify HEAD-трасує редиректи та позначає ланцюги і зламані цілі.