
Rel=canonical — канонические ссылки решают простую задачу: сказать поиску, какой из нескольких похожих адресов считать основным. Инструмент кажется техническим и безобидным, но в моей практике именно он чаще всего выбрасывает из индекса нужные страницы. Настроили «на всякий случай» — и половина каталога перестала показываться. Ниже — как атрибут работает на самом деле, где его ставить, где категорически нельзя и как за полчаса проверить, что у вас на сайте.
Сразу главное, чего не знает большинство: canonical — это рекомендация, а не команда. Поиск учитывает её вместе с другими сигналами и в спорных случаях решает сам. Отсюда две ошибки с разных сторон: одни считают, что canonical гарантированно склеит дубли, другие — что он ничего не значит. Правда посередине: при непротиворечивых настройках он работает почти всегда, при противоречивых — игнорируется.
Откуда вообще берутся дубли
Одна и та же страница почти на любом сайте доступна по нескольким адресам, и владелец об этом обычно не подозревает. Типовые источники:
- Метки рекламных кампаний: /tovar/?utm_source=yandex&utm_medium=cpc
- Параметры сортировки в каталоге: /catalog/?sort=price
- Фильтры: /catalog/?color=red&size=xl
- Один товар в нескольких категориях: /instrument/drel/ и /bosch/drel/
- Идентификаторы сессий и метки партнёрских программ
- Версия для печати и мобильная версия на отдельном адресе
- Адреса со слешем на конце и без, с www и без, с заглавными буквами
Для поиска это разные документы с одинаковым содержанием. Он всё равно выберет один и исключит остальные — механизм склейки работает и без вашего участия. Проблема в том, что выбор делается автоматически и не всегда в вашу пользу: основным может стать адрес с рекламной меткой, который вы сами никому не показываете. Canonical позволяет указать выбор явно, а заодно передать основной странице накопленные сигналы с копий.
Есть и вторая причина следить за дублями — расход лимита обхода. Робот приходит на сайт с ограниченным бюджетом и, натыкаясь на тысячи вариантов одной карточки, тратит его на копии вместо новых страниц. На маленьком сайте это незаметно, на каталоге с фильтрами — критично: новые товары попадают в поиск неделями.
Как это выглядит в коде
Тег размещается в секции head страницы:
<link rel="canonical" href="https://site.ru/catalog/drel/" />
Правила, нарушение которых обесценивает настройку:
- Адрес указывается полностью — с протоколом и доменом. Относительные пути формально допустимы, но при малейшей ошибке в базовом адресе ломаются, поэтому лучше писать абсолютный.
- На странице только один canonical. Два тега — сигнал противоречивый, и поиск проигнорирует оба.
- Указанный адрес должен отдавать код 200. Canonical на редирект, на 404 или на закрытую от индексации страницу не работает.
- Страница может ссылаться сама на себя — это нормальная и даже желательная практика: так вы страхуетесь от версий с метками.
- Адрес в canonical и адрес в карте сайта должны совпадать. Разночтения — самый частый источник противоречий.
Отдельно проверьте, что тег не выводится дважды: одна копия из шаблона темы, вторая из плагина оптимизации. Это классика для типовых движков, и обнаруживается она только просмотром исходного кода готовой страницы, а не настроек в админке.
Где canonical нужен
| Ситуация | Canonical указывает на | Почему так |
|---|---|---|
| Метки рекламных кампаний | Адрес без параметров | Метки не меняют содержание, а плодят копии |
| Сортировка в каталоге | Категорию без параметра сортировки | Набор товаров тот же, порядок вывода поиску не нужен |
| Фильтры, по которым нет спроса | Основную категорию | Сочетаний тысячи, спроса на них нет, в индексе они мусор |
| Товар в нескольких категориях | Один выбранный основной адрес | Иначе сигналы делятся между двумя-тремя копиями карточки |
| Версия для печати | Обычную версию | Содержание совпадает, оформление роли не играет |
| Варианты товара по размеру или цвету | Главную карточку | Если описания почти одинаковые и спроса на вариант нет |
| Адрес с идентификатором сессии | Чистый адрес | Иначе в индекс попадают тысячи одноразовых адресов |
Обратите внимание на строку с вариантами товара: там стоит условие. Если по запросу «холодильник такой-то модели белый» есть спрос, вариант должен быть самостоятельной страницей с собственным описанием, а не схлопываться в основную карточку. Правило общее и оно важнее всех остальных: canonical ставится там, где страница не имеет собственного спроса.
Смежный материал по теме — «Screaming Frog за 20 минут: технический аудит сайта, который найдёт битые ссылки и дубли».
Где canonical ставить нельзя
Здесь совершаются самые дорогие ошибки, и все они выглядят одинаково — страницы просто исчезают из поиска, а причину ищут в чём угодно, кроме одной строки в шаблоне.
Помогу с продвижением: SEO-продвижение от Анатолия Кузнецова — вывожу сайты в топ Яндекса белыми методами.
Страницы пагинации. Классическая ошибка: со второй и последующих страниц каталога canonical ставят на первую, «чтобы не было дублей». В результате поиск перестаёт видеть товары со второй страницы и дальше — они выпадают из индекса вместе со ссылками на них. На каталоге в двадцать страниц это означает потерю девяноста пяти процентов товаров. Правильно: на страницах пагинации canonical указывает сам на себя, а заголовок и описание различаются добавлением номера страницы.
Страницы фильтров, по которым есть спрос. Если сочетание «дрели Bosch» люди ищут, страница фильтра должна быть самостоятельной посадочной с уникальным заголовком, описанием и текстом. Canonical на общую категорию в этом случае — это добровольный отказ от трафика по целому кластеру запросов.
Разные по содержанию страницы. Canonical предназначен для дублей и почти-дублей. Указывать его с одной услуги на другую, потому что «они похожи», — значит убрать одну из них из поиска своими руками.
Все страницы на главную. Встречается при неверной настройке шаблона или после неудачного обновления плагина. Результат: в индексе остаётся одна страница вместо всего сайта. Проверяется в две минуты — откройте исходный код любой внутренней страницы и посмотрите, что стоит в canonical.
Цепочки. Страница А указывает на Б, Б указывает на В. Поиск такие цепочки чаще всего просто игнорирует. Canonical всегда должен указывать на конечный адрес.
Canonical, редирект и noindex: чем различаются
Три инструмента решают похожие на первый взгляд задачи, и путаница между ними обходится дорого.
Если нужны детали, смотрите «Битые обратные ссылки: как вернуть вес, который уходит в пустоту».
| Инструмент | Что делает | Когда применять |
|---|---|---|
| Canonical | Рекомендует считать основным другой адрес; обе страницы остаются доступны людям | Дубли, которые нужны на сайте: фильтры, сортировки, метки |
| Редирект 301 | Жёстко переносит адрес и людей, и роботов на новый; старый перестаёт открываться | Страница переехала навсегда, старый адрес больше не нужен |
| Noindex | Убирает страницу из поиска, но оставляет доступной людям | Служебные страницы: корзина, личный кабинет, результаты поиска по сайту |
| Disallow в robots.txt | Запрещает роботу заходить на адрес | Технические разделы; для удаления из индекса не годится |
Главная ловушка — сочетать canonical с запретом в robots.txt. Логика владельца понятна: «закрою страницы фильтров от обхода, чтобы робот не тратил время». Но если робот не может зайти на страницу, он не увидит и canonical на ней — и склейки не произойдёт. Работает только одно из двух: либо страница открыта для обхода и содержит canonical, либо закрыта и обрабатывается на уровне настроек параметров.
Вторая ловушка — canonical вместе с noindex на одной странице. Сигналы противоречат друг другу: один говорит «объедини меня с той страницей», второй «выкинь меня совсем». Поведение поиска в таком случае непредсказуемо, и в худшем варианте под исключение попадает и целевая страница.
Пагинация: как делать правильно
Раньше существовали атрибуты rel=next и rel=prev, и во многих инструкциях они до сих пор описаны как обязательные. Их поддержка прекращена, ориентироваться на них не нужно. Современный подход к листингам такой:
- Каждая страница пагинации ссылается сама на себя в canonical.
- Заголовок и описание различаются: к ним добавляется номер страницы. Одинаковые title на двадцати страницах — повод для исключения по дублям.
- Текстовое описание категории выводится только на первой странице, на остальных не дублируется.
- Со всех страниц листинга есть обычные ссылки на товары, а подгрузка «показать ещё» дублируется работающей постраничной навигацией — иначе робот не увидит товары дальше первого экрана.
- Вариант со страницей «показать все» имеет смысл только при небольшом каталоге: если на ней несколько сотен позиций, она будет грузиться дольше, чем ждёт и человек, и робот.
Фильтры: где проходит граница
Самый сложный участок. С одной стороны, фильтры порождают комбинаторный взрыв адресов. С другой — именно страницы фильтров часто приносят основной низкочастотный трафик. Решение принимается по спросу, а не по технике.
Порядок работы такой. Выгружаете список реально используемых сочетаний фильтров. Проверяете по Вордстату, ищут ли такие формулировки. Те, где спрос есть, превращаете в полноценные посадочные: свой заголовок, своё описание, свой текст, ссылка из меню или из блока популярных подборок — чтобы страница не была сиротой. Все остальные сочетания закрываете canonical на родительскую категорию.
Практический ориентир: обычно из сотен возможных сочетаний спрос есть у двадцати-сорока. Это бренд плюс категория, категория плюс основная характеристика, категория плюс ценовой сегмент. Сочетания из трёх и более фильтров почти никогда не имеют спроса и должны схлопываться.
Как это устроено в типовых движках
В большинстве систем управления сайтом canonical выводится автоматически, и владелец о нём не думает до первой аварии. Знать стоит две вещи: кто именно его формирует и где эту логику переопределить.
В WordPress тег обычно выводит плагин оптимизации, а не ядро, и настройка сидит либо в общих правилах, либо в шаблоне темы. Отсюда классический двойной вывод: тема добавляет свой тег, плагин свой. Второй частый случай — архивы: страницы меток и рубрик по умолчанию плодят листинги с одинаковым содержанием, и разбираться с ними надо отдельно, а не одним общим правилом.
Подробнее об этом — в статье «Проверка канонических адресов: когда canonical работает против вас».
В самописных решениях и на конструкторах чаще встречается противоположная беда: canonical выводится статически, одной строкой в общем шаблоне, и на всех страницах указывает на главную. Это та самая ошибка, после которой в индексе остаётся один адрес. Проверяется просмотром кода двух разных внутренних страниц: если строка одинаковая, у вас именно этот случай.
Универсальное правило независимо от движка: не доверяйте настройкам в админке, смотрите готовый исходный код на живой странице. Между галочкой в интерфейсе и тем, что реально уходит роботу, стоит кэш, тема и два плагина, и любой из них может переписать результат.
Как проверить настройку на своём сайте
- Откройте исходный код главной, страницы категории, карточки товара и статьи. Найдите строку с rel=»canonical» и прочитайте, куда она ведёт.
- Добавьте к любому адресу произвольный параметр вида ?test=1 и снова посмотрите код. Canonical должен указывать на чистый адрес, а не на адрес с параметром.
- Откройте вторую страницу пагинации в каталоге. Canonical обязан указывать на неё саму.
- В Вебмастере зайдите в раздел страниц в поиске, вкладку исключённых, и отфильтруйте по причине «неканоническая». Просмотрите список: если там оказались нужные страницы — вы нашли проблему.
- Проверьте, что адреса в canonical, в карте сайта и во внутренних ссылках записаны одинаково: один протокол, одинаково со слешем или без, без www или с www.
- Убедитесь, что тег выводится один раз. Поиск по исходному коду слова canonical должен давать одно совпадение.
Отдельно посмотрите, что происходит после смены движка или темы. Массовые исчезновения страниц из поиска через две-три недели после обновления сайта в большинстве случаев объясняются именно тем, что новый шаблон стал выводить canonical по-другому.
Частые вопросы
Поиск игнорирует мой canonical и выбирает другую страницу. Почему?
Значит, сигналы противоречивы. Проверьте: указанный адрес отдаёт 200? На него ведут внутренние ссылки, или все ссылки идут на «неканоническую» версию? Он есть в карте сайта? Содержание страниц действительно совпадает? Поиск сопоставляет все эти признаки и, если они расходятся с вашим указанием, принимает решение самостоятельно.
Нужен ли canonical на страницах, у которых нет дублей?
Полезен. Самоссылающийся canonical страхует от версий с рекламными метками, от адресов с лишними параметрами и от чужих копий вашего материала. Ставить его на все страницы по умолчанию — нормальная практика.
Передаёт ли canonical вес ссылок?
При корректной склейке накопленные сигналы неканонической страницы учитываются в пользу основной. Но это не то же самое, что редирект: часть сигналов теряется, и рассчитывать на canonical как на способ передать вес при переезде нельзя — для переезда есть 301.
Можно ли ставить canonical на страницу другого сайта?
Технически да, и это применяют при синдикации материалов: партнёр публикует вашу статью и указывает canonical на ваш оригинал. Использовать это внутри собственных проектов, чтобы «объединить» два сайта, не стоит — вы просто уберёте один из них из поиска.
Через сколько времени видно результат?
После правки нужно дождаться переобхода: от нескольких дней для главных страниц до нескольких недель для глубоких. Ускорить можно отправкой ключевых адресов на переобход в Вебмастере и обновлением карты сайта. Раньше чем через две-три недели делать выводы бессмысленно.
Коротко
- Canonical — рекомендация, а не команда: он работает, когда все остальные сигналы ему не противоречат.
- Ставится там, где у страницы нет собственного спроса: метки, сортировки, редкие сочетания фильтров, версии для печати.
- Самая дорогая ошибка — canonical со страниц пагинации на первую страницу: каталог теряет всё, кроме первого экрана.
- Страницы фильтров со спросом должны быть самостоятельными посадочными, а не схлопываться в категорию.
- Canonical вместе с запретом в robots.txt или с noindex не работает: робот либо не видит тег, либо получает противоречивые указания.
- Проверка занимает полчаса: исходный код четырёх типов страниц, адрес с лишним параметром, вторая страница пагинации и список исключённых страниц в Вебмастере.
Если в Вебмастере растёт число исключённых страниц, а причины непонятны, приходите на SEO-консультацию — посмотрим ваш каталог, разберём, какие адреса должны схлопываться, а какие обязаны остаться самостоятельными, и составим порядок правок.
Увеличьте позиции и продажи вашего сайта
Профессиональное SEO-продвижение с гарантией результата. Выберите подходящую услугу:
Остались вопросы по продвижению?
Меня зовут Анатолий Кузнецов, я SEO-оптимизатор с 20-летним стажем. Разберу ваш сайт, отвечу на вопросы и подскажу, что улучшить для роста позиций в Яндексе и Google.
Связаться со мной →
Комментарии
Ермолай Топорков
Нашёл у себя ровно то, о чём вы пишете про пагинацию. Каталог на 60 страниц, со второй по шестидесятую canonical стоял на первую. В индексе было 180 товаров из четырёх тысяч, и я год думал, что дело в слабых описаниях. Поправил на самоссылку. Сколько ждать возврата и надо ли отправлять на переобход все страницы листинга?
Анатолий Кузнецов автор
Все шестьдесят отправлять не нужно и, скорее всего, не выйдет — лимит на переобход ограничен. Отправьте страницы листинга со второй по шестую и десяток карточек с разных страниц: робот пойдёт по ссылкам дальше сам. Параллельно проверьте карту сайта — часто в ней тоже перечислены только товары с первой страницы, потому что она собиралась тем же плагином с той же логикой. Обновите её так, чтобы в ней были все четыре тысячи адресов, и укажите заново в Вебмастере. По срокам: первые товары начнут появляться через одну-две недели, основной массив наберётся за полтора-два месяца. И не трогайте в этот период структуру адресов, иначе всё начнётся заново.
Регина Шалимова
У нас интернет-магазин одежды, один товар лежит в трёх категориях и в двух подборках. Раньше стоял canonical на адрес из основной категории, потом разработчик сделал ЧПУ без категории в пути — товар стал доступен по одному адресу. Стало заметно проще жить, дублей нет вообще.
Севастьян Ноздрин
Не понимаю логики. Если canonical всего лишь рекомендация и поиск решает сам, зачем вообще этим заниматься? Проще закрыть всё лишнее в robots.txt и не морочить голову.
Анатолий Кузнецов автор
Закрытие в robots.txt решает другую задачу и создаёт новую проблему. Запрет мешает роботу зайти на страницу, но не убирает её из индекса: если на неё стоят ссылки, адрес может попасть в поиск вообще без содержания — и вы получите в выдаче пустышку, которую нечем исправить, потому что робот туда не ходит. Второе: закрытые адреса не передают накопленные сигналы основной странице, они просто выпадают. Canonical при непротиворечивых настройках срабатывает почти всегда — проблемы начинаются, когда внутренние ссылки ведут на одну версию, карта сайта на другую, а canonical на третью. То есть спорить надо не с инструментом, а с бардаком в адресах. Сделайте адреса согласованными — и рекомендация начнёт работать как команда.
Клавдия Пятерикова
Вопрос про фильтры. У нас шинный магазин, сочетаний фильтров реально тысячи: сезон, ширина, профиль, диаметр, бренд. По вашей логике надо проверять каждое по Вордстату, но это нереально руками. Как отобрать те самые двадцать-сорок?
Анатолий Кузнецов автор
Руками и не надо. Возьмите два источника вместо перебора. Первый — Вебмастер, раздел запросов: там уже есть формулировки, по которым вас показывают, включая те, о которых вы не думали; из них видно, какие сочетания люди реально набирают. Второй — ваша собственная статистика фильтров: какие комбинации чаще всего выбирают посетители на сайте. Пересечение этих двух списков даёт кандидатов, и их обычно как раз несколько десятков. В шинах, кстати, спрос предсказуем: это «типоразмер + сезон» и «типоразмер + бренд», то есть 205 55 r16 зимние. Такие страницы делайте посадочными с подстановкой типоразмера в заголовок и коротким осмысленным текстом, а всё, что глубже двух параметров, схлопывайте на категорию.
Аскольд Мещеринов
Добавлю про двойной тег. У нас в шаблоне выводился canonical и ещё один вставлял плагин оптимизации, причём с разными адресами — один со слешем, второй без. Страницы месяцами прыгали между индексом и исключёнными. Нашли только когда посмотрели исходный код готовой страницы, в админке всё выглядело правильно.
Виола Заикина
А как быть с языковыми версиями сайта? У нас русская и английская версии на поддоменах, содержание переведённое. Ставить canonical с английской на русскую или это как раз тот случай, когда нельзя?
Анатолий Кузнецов автор
Это как раз тот случай, когда нельзя. Перевод — не дубль: это разные документы для разных аудиторий, и каждый должен показываться по своим запросам на своём языке. Canonical с английской версии на русскую уберёт английскую из поиска целиком. Правильная схема другая: на каждой версии canonical указывает сам на себя, а связь между версиями описывается атрибутами hreflang, где перечислены все языковые варианты, включая саму страницу. Ошибка, которую при этом делают чаще всего, — указывают hreflang только на соседнюю версию и забывают про самоссылку, из-за чего разметка не считывается. И проверьте, что переводы действительно переводы: если английская версия сделана машинным переводом и не вычитана, проблема будет не в canonical, а в качестве.
Пахом Курносов
Проверил по вашему списку добавление параметра ?test=1 — у меня canonical подставляет адрес вместе с этим параметром. То есть любой мусорный параметр создаёт себе каноническую страницу. Плагин стандартный, настроек на этот счёт не нашёл.
Иулита Бадьина
Про синдикацию из вопросов — работает. Мы отдаём статьи отраслевому порталу с условием, что они ставят canonical на наш оригинал. Оригинал в выдаче остаётся первым, а с портала идут переходы. Единственное, приходится каждый раз проверять руками: пару раз забывали поставить.
Кондрат Шелестов
Вопрос по переезду. Меняем структуру адресов каталога, старые адреса нужно закрыть. Можно ли вместо трёхсот редиректов просто поставить на старых страницах canonical на новые? Разработчик говорит, что это то же самое и делается в одну строку.
Анатолий Кузнецов автор
Не то же самое, и разработчик ошибается. Canonical оставляет старые адреса доступными: по ним будут ходить люди из закладок и с внешних ссылок, они останутся в чужих статьях и в рекламных объявлениях, а часть сигналов при склейке теряется. Редирект 301 переносит и людей, и накопленный вес однозначно, и старый адрес перестаёт существовать — при переезде нужен именно он. Триста редиректов, кстати, не пишутся руками: если структура меняется по правилу, это одно регулярное выражение в конфигурации сервера. Разово выгрузите список старых и новых адресов в таблицу, сверьте попарно, что каждый ведёт на смысловой аналог, а не на главную, и после запуска проверьте выборочно два-три десятка. И обязательно переставьте внутренние ссылки на новые адреса: цепочка «внутренняя ссылка → редирект → страница» съедает лимит обхода зря.
Аглая Мурашкина
Спорный момент про самоссылающийся canonical на всех страницах. У нас после его включения из индекса вылетели страницы фильтров, которые до этого нормально ранжировались. Оказалось, плагин подставлял в canonical адрес категории, а не самой страницы. Так что «ставить по умолчанию» — совет опасный без проверки.
Гурий Чепурной
Подскажите, что делать с бесконечной прокруткой. У нас каталог грузит товары при скролле, постраничной навигации нет вообще. Поиск видит только первые двадцать позиций из тысячи. Разработчик говорит, что это современно и так у всех.
Матрёна Одинокова
Полезная деталь про смену темы. У нас именно так и было: обновили шаблон, через три недели просели, причину искали в текстах и ссылках. А новая тема выводила canonical на главную со всех страниц. Теперь после любого обновления первым делом смотрю исходный код трёх страниц.