Canonical: это тег <link rel="canonical"> в коде страницы, которым вы сообщаете Google, какой из нескольких похожих адресов главный и должен ранжироваться. Ставить его нужно тогда, когда один и тот же контент открывается по разным URL: фильтры и сортировки в магазине, http и https, www и без, UTM-метки, версии для печати. Ошибки с canonical снаружи незаметны, сайт работает как работал, а трафик тем временем тихо расползается по дублям или исчезает вместе с главной страницей, которую вы случайно «отдали» другой. Ниже разбираем, когда тег нужен, как его проверить и какие восемь ошибок мы чаще всего находим на аудитах.

Google не любит дубли страниц. Когда он находит пять адресов с одинаковым текстом, ему нужно выбрать один для выдачи, а остальные считать копиями. Выбирает он сам, по своим признакам, и не всегда так, как хотели бы вы. Тег canonical даёт подсказку: «из этих пяти вот эта основная». Выглядит он так, в разделе <head>:
<link rel="canonical" href="https://site.ua/catalog/kresla/">
Важно понимать два момента. Первый: это подсказка, а не приказ. Google может её проигнорировать, если считает, что вы ошиблись, например, указали canonical на страницу с другим содержанием. Второй: canonical не закрывает страницу от посетителей и не перенаправляет их. Человек откроет любой из адресов и увидит контент, меняется только то, какой адрес попадёт в поиск и куда Google сложит все сигналы, включая ссылки на дубли. Официальное описание механизма есть в документации Google о консолидации дублирующихся URL.
Три инструмента решают похожую задачу («спрятать лишнее»), но ведут себя по-разному. Путаница между ними обходится дороже всего.
| Инструмент | Что делает | Вес ссылок | Когда уместен |
|---|---|---|---|
| rel="canonical" | Указывает основную версию | Переходит на каноническую | Фильтры, UTM, сортировка |
| 301-редирект | Перенаправляет всех | Переходит на новый адрес | Переезд, слияние страниц |
| noindex | Скрывает из поиска | Не передаётся | Корзина, кабинет, поиск по сайту |
rel="canonical" пользователь видит, все адреса открываются.301 старый адрес сразу открывает новый, для людей и роботов.noindex открывается, но из выдачи выпадает.Простое правило: если страница нужна людям, а Google нет, и у неё есть «старшая сестра» с тем же содержанием, это canonical. Если страница никому не нужна, это 301. Если страница нужна людям, но аналога у неё нет и в поиске ей делать нечего, это noindex.
/kresla/?color=black&sort=price показывает ту же категорию, что и /kresla/. Без canonical Google видит сотни вариантов одной страницы. Исключение: фильтры, под которые вы осознанно делаете отдельные посадочные страницы со своим текстом и спросом («чёрные офисные кресла»); им нужен canonical на самих себя./blog/?page=2 не дубли первой, у них другой список. Canonical со второй страницы на первую прячет от Google все статьи, которые лежат глубже. Каждая страница пагинации должна ссылаться сама на себя.?utm_source=facebook, ?gclid=..., ?fbclid=...: адрес с меткой должен иметь canonical на чистый адрес. Это самая частая причина, почему в индекс попадают десятки «рекламных» копий главной./article/print/ или m.site.ua ссылаются на полную версию./office/kreslo-x/, и как /sale/kreslo-x/, выберите основной путь и поставьте его в canonical на обеих.
То, что написано в коде, и то, что выбрал Google, это две разные вещи. В Search Console есть инструмент «Проверка URL»: вставьте адрес в строку вверху, и в блоке «Индексирование» увидите два поля: «Канонический URL, указанный пользователем» и «Канонический URL, выбранный Google». Если они совпадают, всё хорошо. Если нет, Google с чем-то не согласился, и нужно выяснить, с чем именно: чаще всего страницы не идентичны, либо на «каноническую» ведёт редирект, либо она закрыта от индексации.
Для массовой проверки подойдёт любой краулер вроде Screaming Frog: он показывает canonical каждой страницы и помечает те, что ссылаются не на себя. Быстрая ручная проверка: открыть код страницы (Ctrl+U) и поискать rel="canonical". Если тегов два, это уже ошибка. Ещё одно место, где может прятаться canonical, это HTTP-заголовок Link:, его видно в инструментах разработчика на вкладке Network или через проверку заголовков онлайн.
По нашему опыту аудитов, canonical в том или ином виде сломан примерно на каждом третьем сайте, который к нам приходит. Вот что встречается чаще всего.
href="/catalog/kresla/" вместо полного https://site.ua/catalog/kresla/ формально работает, но при любой ошибке в базовом пути превращается во что-то вроде https://site.ua/catalog/catalog/kresla/. Только абсолютные URL.hreflang, а canonical у каждой свой.Отдельно о скрытой ошибке: canonical, который меняется в зависимости от параметра. Страница /kresla/?page=3 имеет canonical /kresla/?page=3, а /kresla/?page=3&sort=price уже /kresla/. Логика «срезать только часть параметров» должна быть прописана явно, иначе программист сделает, как проще. Все эти вещи стандартно входят в детальный SEO-аудит, и именно там их стоит ловить, а не после просадки позиций.

| Платформа | Как ставится | На что обратить внимание |
|---|---|---|
| WordPress | Yoast SEO или Rank Math | Дубль тега от темы, архивы |
| OpenCart | Есть для товаров и категорий | Фильтры с route= и path= |
| Shopify | Автоматически | Не переписывать тег в теме |
| Magento | Опция в конфигурации | Layered Navigation отдельно |
| Своя разработка | В шаблоне из чистого URL | Разрешённые параметры в ТЗ |
/collections/x/products/y сам ссылается на /products/y.page), покрыть тестами.На любой платформе после внедрения стоит пройтись краулером и проверить три группы: страницы фильтров, пагинацию и адреса с UTM. Именно там чаще всего что-то не так. В Query мы обычно делаем это в рамках технической оптимизации вместе с редиректами, robots.txt и sitemap, потому что эти вещи работают только в комплексе.
?utm_source=test и проверьте, остался ли canonical чистым.