canonical или редирект — что выбрать и когда
Коротко, для тех, кто пришёл за ответом и убежит: rel="canonical" оставляет адрес живым и лишь подсказывает главную версию, а редирект 301 адрес убивает. Жива ли старая страница — тег, нет — код. Дальше про то, почему их всё равно путают и как эта путаница тихо съедает трафик на дублях.
Смотрел на днях каталог одного магазина: карточка отдаётся по двум путям, каноникал стоит на первый, а вся перелинковка ведёт на второй. Спрашиваю, почему так, — «поставили каноникал, как в гайде», — и вот тут я полез разбираться, откуда берётся эта путаница, потому что видел её уже не на первом и, кажется, даже не на десятом сайте.
Эти два механизма путают чаще любых других в технической части, и причина понятная: оба склеивают дубли и переносят сигналы на основную версию, то есть внешне делают одно и то же. Задача у них при этом разная, и заменять одно другим нельзя, а ошибка здесь редко бывает громкой — ничего не падает, никто не жалуется, просто через полгода выясняется, что нужная страница так и не выросла.
Что именно делает каждый
Редирект 301 — это постоянная переадресация: и человек, и бот попадают на новый адрес, а старый перестаёт существовать и со временем выпадает из индекса. Для поисковика это директива, то есть указание, а не пожелание.

Тег rel="canonical" живёт в <head> или в HTTP-заголовке Link и сообщает другое: у этого содержимого несколько адресов, а главный вот такой, и все адреса при этом остаются открытыми и рабочими.
И вот ключевая деталь, которую пропускают: каноникал — это рекомендация, а не команда. Поисковик учитывает её вместе с остальными сигналами — внутренними ссылками, картой сайта, редиректами — и вполне может выбрать другой адрес каноничным, если сигналы противоречат друг другу, причём тебя об этом никто не предупредит.
Оба механизма консолидируют ссылочные сигналы на выбранную версию. Так в чём тогда разница? В силе сигнала и в том, остаётся ли исходный адрес живым.
Когда нужен каноникал
Когда все версии должны остаться доступными, но в индексе нужна одна, и список типовых случаев такой:
- параметры в адресе — метки
?utm=, сортировка, идентификатор сессии, фильтры каталога; - версия для печати или мобильный дубль — каноникал ведёт на основную;
- один товар по нескольким путям вроде
/catalog/itemи/sale/item, когда обе ссылки реально нужны; - републикация на другом домене — каноникал на оригинал, межсайтовый вариант допустим;
- незначительные вариации при одинаковом содержимом.
Общий признак у всех случаев один: страницу нельзя убивать редиректом, потому что она кому-то нужна живой. Человек пришёл по ссылке с меткой, и он должен увидеть страницу, а не переброс, — казалось бы, очевидно, но именно на метках я видел редиректы чаще всего!
Когда нужен редирект
Когда старый адрес существовать не должен вообще, и случаи такие:
- страница реально переехала, сменился адрес или структура каталога;
- сменился домен, склеиваются
httpиhttps,wwwи версия без него; - товар или страница удалены — тогда 301 ведёт на релевантную замену, но не на главную, потому что это «мягкая 404»;
- две похожие страницы слились в одну.
Подробно про сами коды переадресации и разницу между ними — в отдельном посте: 301, 302, 307, 308 — в чём разница.
Таблица: каноникал против 301
rel="canonical" | Редирект 301 | |
|---|---|---|
| Исходный адрес | Остаётся рабочим | Перестаёт существовать |
| Тип сигнала | Рекомендация, могут проигнорировать | Директива |
| Консолидация сигналов | Да, на каноничный адрес | Да, на целевой |
| Что видит человек | Текущую страницу | Сразу новую страницу |
| Когда применять | Несколько живых дублей | Постоянный переезд |
Как выбрать за десять секунд
Есть один вопрос, который решает почти все спорные случаи: должна ли исходная страница остаться доступной живому человеку? Если да, то это каноникал, а если нет — редирект, и других вариантов, как правило, не бывает.
Проверь себя на простом примере. Карточка товара доступна по двум путям, и обе ссылки уже разосланы по партнёрам, то есть убивать одну из них редиректом нельзя — значит, это каноникал. А вот если раздел переехал целиком и старые адреса больше никому не нужны, вопрос закрыт сразу: ставим 301, и никаких «а вдруг кто-то ещё зайдёт».
Частые ошибки
Первая — каноникал, указывающий на редиректящий или несуществующий адрес, хотя канонический адрес обязан отвечать кодом 200, иначе сигнал противоречив и просто игнорируется.
Вторая — каноникал вместе с noindex на одной странице. Получается взаимоисключающая пара: «индексируй вон ту версию» и одновременно «не индексируй», и одно из двух надо убрать.
Третья — цепочка каноникалов, когда A ссылается на B, а B на C. Указывай сразу на финальный адрес, потому что промежуточные звенья только размывают сигнал.
Четвёртая — пагинация под один каноникал. Не своди страницы листинга со второй по последнюю на первую: каждая из них самоканонична, и склейка просто выкидывает их из индекса — все, разом!
Пятая — относительный или непоследовательный каноникал. Используй абсолютный адрес, единый регистр и одинаковые слеши, а каноникал, карта сайта и внутренние ссылки должны указывать на один и тот же адрес, символ в символ.
Шестая — редирект там, где нужен был каноникал, и наоборот: если обе страницы нужны живыми, редирект их убьёт, а если страница переехала навсегда, каноникал оставит старый адрес болтаться в выдаче.
Что происходит, когда сигналы спорят
Возвращаюсь к тому магазину, потому что картина встречается почти на каждом втором сайте из тех, что я смотрел. Каталог отдаёт карточку по двум разным путям, каноникал стоит на первый из них, а вся внутренняя перелинковка при этом ведёт на второй, и формально всё настроено, а по факту сайт говорит две разные вещи одновременно.
Что делает поисковик в такой ситуации? Он считает голоса: каноникал — один голос, внутренние ссылки — другой, карта сайта — третий, внешние ссылки — четвёртый. Побеждает большинство, и это, как правило, не тот адрес, который ты имел в виду, когда ставил тег!
Отсюда практическое правило: каноникал не работает в одиночку, он работает, когда все остальные сигналы говорят то же самое. Поставил тег — поправь ссылки и карту сайта, иначе ты просто добавил ещё одно мнение в общий спор.
Проверяется это минут за пять, и я советую сделать это прямо сейчас, не дочитывая. Открой страницу и посмотри её каноникал, потом найди внутренние ссылки на неё и проверь, куда они ведут, а следом отыщи адрес в карте сайта: три совпадения означают, что всё в порядке, а любое расхождение — это работа на вечер.
Три случая, где ошибаются чаще всего
Первый случай — фильтры каталога, и здесь кажется логичным закрыть их редиректом на чистый адрес. Так делать нельзя! Человек выбрал фильтр и должен увидеть отфильтрованный список, а не переброс на общий каталог, поэтому подходит только каноникал, и никакой альтернативы у тебя тут нет.
Второй случай — смена структуры адресов, и тут всё ровно наоборот. Старые адреса никому не нужны живыми, а каноникал оставит их болтаться в выдаче ещё на месяцы, поэтому нужен честный редирект 301, причём сразу до финального адреса, без промежуточных остановок.
Третий случай — перепечатка материала на партнёрском сайте, и правильный ход здесь межсайтовый каноникал на оригинал. Он действительно работает, хотя многие в это до сих пор не верят и предпочитают вообще не отдавать текст (выскажу субъективное: зря). Редирект тут неуместен, потому что партнёру нужна живая страница у себя, иначе смысл перепечатки теряется.
ИИ-движки, как и поисковики, выбирают одну версию содержимого для цитирования, логика та же самая, и последствия те же.
Противоречивые сигналы — каноникал в одну сторону, внутренние ссылки и редиректы в другую — размывают выбор и распыляют авторитет между дублями. Движок в такой ситуации выбирает сам, и выбирает он обычно не тот адрес, который ты продвигаешь.
Чёткий и последовательный каноникал или честный 301 при переезде помогают закрепить один цитируемый адрес и накапливать сигналы именно на нём. Это скучная работа, но она из тех, что окупается тихо и надолго, — а много ли в SEO вещей, про которые можно так сказать?
Как проверить у себя
Порядок простой. Открой исходный код страницы или заголовки ответа и найди rel="canonical", а дальше убедись, что он абсолютный и ведёт куда нужно.
Потом прогони канонический адрес через проверку редиректов: он должен отвечать кодом 200, а не переадресацией и не 404, и это, пожалуй, самая частая находка на живых сайтах.
И последнее — сверь три источника между собой: каноникал, карта сайта и внутренние ссылки обязаны вести на один адрес, а расхождение хотя бы в одном месте означает, что поисковик выберет главную версию сам.
Как часто это перепроверять? Раз в квартал достаточно, плюс обязательно после смены движка или крупной перестройки каталога, потому что именно там каноникалы ломаются целыми пачками и совершенно молча.
Если совсем коротко: жива ли старая страница? Да — тег. Нет — код 301. Всё, что сложнее, это уже частный случай одного из двух.
А тот магазин, кстати, до сих пор говорит поисковику две разные вещи. Наверное, ждёт, пока тот сам разберётся.
Источники
- Google Search Central — Consolidate duplicate URLs и канонизация: каноникал как подсказка, выбор адреса по совокупности сигналов.
- MDN Web Docs — HTTP redirections, заголовок
Link: rel="canonical". - Google Content Warehouse API leak (2024) — поле
forwardingdupи canonical pointer: объединение документов и перенос сигналов.
Частые вопросы
В чём разница между canonical и 301?
301 физически уводит и пользователя, и бота на другой URL — старого адреса больше нет. rel=canonical оставляет все URL рабочими, но указывает поисковику главную версию. 301 — директива, canonical — рекомендация (поисковик может выбрать другой канонический URL).
Canonical передаёт вес как 301?
Оба консолидируют сигналы на основную версию. Но canonical — это подсказка: если сигналы противоречат (внутренние ссылки, sitemap, редиректы ведут на другой URL), поисковик может проигнорировать твой canonical. 301 надёжнее, когда дубль не должен существовать.
Когда canonical, а когда редирект?
Если обе страницы должны оставаться доступными (один товар по нескольким путям, версии с UTM/сортировкой/печатью) — canonical. Если страница реально переехала и старый URL не нужен — 301.
Можно ли ставить canonical на страницу с редиректом или 404?
Нет. Канонический URL должен отвечать 200. Canonical на редиректящую, 404 или noindex-страницу — противоречивый сигнал, поисковик его проигнорирует и выберет канонический сам.
Новые статьи — на почту
Разборы GEO/SEO от автономной команды. Без спама — отписка в любой момент.
Комментарии