
Что вы сообщаете этой ссылкой
<link rel="canonical" href="..."> в шапке документа говорит одну вещь: у этого содержимого есть предпочтительный адрес, и вот он.
Задача, которую вы помогаете решить, — не ваша, а поисковой системы. Когда одно и то же содержимое доступно по нескольким URL, ей приходится выбирать, какой адрес держать в индексе. Выбор она сделает в любом случае, с вашей подсказкой или без. Canonical просто избавляет её от угадывания.
Типичный сайт плодит такие адреса без всякого умысла: версия с параметрами меток и без, с завершающим слешем и без него, товар, доступный из двух категорий, страница списка с сортировкой по цене и по названию.
Почему это рекомендация, а не команда
Формально указание можно проигнорировать, и оно игнорируется чаще, чем принято думать.
Причина в том, что canonical заполняет владелец сайта, а поисковая система не обязана верить владельцу на слово. Она сравнивает указание с собственными наблюдениями: совпадает ли содержимое страниц, куда ведут внутренние ссылки, какой адрес встречается во внешних источниках, что указано в карте сайта. Если картина расходится с подсказкой, система выберет свой вариант.
Практическое следствие: canonical на страницу с заметно другим содержимым не сработает. Он не объявляет дубли — он помечает уже существующие.
Canonical против редиректа
Оба инструмента про «эта страница вместо той», но решают противоположные задачи.
| Canonical | 301-редирект | |
|---|---|---|
| Что происходит с посетителем | Остаётся на открытой странице | Переносится на другой адрес |
| Доступен ли исходный URL | Да, работает как обычно | Нет, отдаёт переадресацию |
| Исполнение | Рекомендация, может не сработать | Команда, исполняется браузером |
| Перенос сигналов | Обычно да, без гарантии | Да, при живой переадресации |
| Обратимость | Правка одной строки | Требует изменения на сервере |
Правило выбора выводится из первой строки таблицы. Нужны обе страницы живыми — canonical. Старый адрес не должен больше открываться — 301-редирект.
Отсюда же ясно, когда canonical неуместен. Товар снят с продажи, раздел переехал, сайт сменил домен — во всех этих случаях старая страница не должна открываться, и рекомендация тут не поможет.
Где его ставят осмысленно
Три сценария, в которых указание действительно нужно.
Фильтры и сортировки в каталоге. Один и тот же набор товаров под десятком адресов. Canonical на базовую страницу категории оставляет пользователю рабочие фильтры и убирает мусор из индекса.
Метки рекламных кампаний. Ссылка с параметрами отслеживания технически другой URL. Самоссылающийся canonical на каждой странице закрывает вопрос заранее.
Один товар в нескольких категориях. Карточка доступна по двум путям, оба нужны для навигации.
Отдельный случай — публикация одного материала на нескольких площадках. Межсайтовый canonical сообщает, чья версия основная.
Как его ломают
Цепочка. Страница А ссылается на Б, Б — на В. Обрабатывается плохо, часто отбрасывается целиком. Указывать нужно сразу на конечный адрес.
Перекрёстное указание. А ссылается на Б, Б ссылается на А. Система не может выбрать и решает сама, игнорируя обе подсказки.
Canonical вместе с noindex. Одно указание говорит «объедини с той страницей», другое — «выброси эту». Противоречие, результат непредсказуем.
Canonical на закрытую или несуществующую страницу. Основным назначен адрес, которого нет в индексе. Из выдачи может пропасть вся группа.
Массовое указание на главную. Встречается в шаблонах, где строку прописали один раз на весь сайт. Все страницы объявляют себя копией главной и постепенно выпадают.
Чего canonical не делает
Он не уменьшает нагрузку на обход. Робот всё равно скачивает обе страницы, чтобы прочитать указание, — краулинговый бюджет расходуется как прежде. Если задача в экономии обхода, работать нужно с robots.txt и структурой ссылок.
Он не убирает страницу из выдачи. Для этого нужен noindex, и ставить его одновременно с canonical нельзя.
Он не склеивает разные тексты на одну тему. Две статьи, написанные по-разному про одно и то же, — не дубли, а конкуренты внутри сайта. Лечится это объединением в один материал, а не разметкой.
Спорное место
Canonical удобно использовать как обезболивающее. Каталог наплодил тысячи адресов с параметрами — разметить и забыть. Работает, отчёт закрывается, проблема выглядит решённой.
Но структурная причина остаётся. Робот продолжает ходить по мусорным адресам, тратя на них тот же ресурс, что и до правки. На небольшом сайте это незаметно. На крупном каталоге разница между «дубли размечены» и «дубли не генерируются» — это разница между тем, обходятся ли новые товары за день или за месяц.
Правильный порядок неудобен тем, что дороже: сначала разобраться, почему адреса вообще размножаются, и только потом канонизировать то, что убрать нельзя.
Частые вопросы
Можно ли ставить canonical на самого себя?
Передаёт ли canonical ссылочный вес?
Что будет, если canonical указывает на несуществующую страницу?
Нужен ли canonical на страницах пагинации?
Работает ли canonical между разными доменами?