Canonical: что это за атрибут и как прописать канонический адрес страницы
Что такое канонический адрес страницы, зачем он нужен и почему важен для SEO. Когда используется каноникал и как правильно его настроить. Распространенные ошибки при прописывании canonical.
Если на сайте есть несколько страниц с одинаковым контентом, среди них нужно определить главную страницу — каноническую. Иначе ПС могут вывести в индекс не то, что вы ожидали.
Рассказываем, как работают канонические страницы, в каких случаях их нужно указывать и как это сделать.
Что такое каноническая страница, ссылка и rel canonical
Каноническая страница — основная, наиболее предпочитаемая страница. Каноническая ссылка (URL) — ссылка, которая ведёт на эту страницу. rel=”canonical” — атрибут, который указывается в контейнере тега , чтобы указать поисковому роботу: конкретная страница каноническая, то есть главная.
Объясним на примере, как работают канонические страницы. Представим, что страница с одним и тем же контентом доступна по нескольким адресам. Например, товар размещается одновременно в разных категориях. В этом случае образуются несколько страниц с разными URL, но с одинаковым контентом:

Поисковые системы могут посчитать такие страницы дублями. Это проблема для SEO.
Почему канониклы важны для SEO
Если один и тот же контент доступен на разных страницах сайта, в дальнейшем есть два пути развития событий. Оба неблагоприятны для SEO сайта.
- ПС определит среди дублей основную страницу, а остальные «склеит» с ней как дубли и удалит из индекса.
При этом не факт, что страница будет выбрана верно, и из индекса может выпасть нужная страница.
Google говорит, что у ПС есть собственные «канонические сигналы», по которым она пытается определить, какой из URL выбрать каноническим. Подробнее — в Справке.
- Если ПС не определит каноническую страницу автоматически, то может оставить в индексе версии страницы вместе с дублями.
Тогда все они могут конкурировать между собой, «моргать» в выдаче и т. д. Это может влиять на положение сайта в поиске.
Кроме того, индексирующий робот может медленнее доходить до новых страниц из‑за того, что будет обходить дубли.

Поэтому не стоит надеяться на то, что ПС сами определят каноническую страницу. Лучше напрямую указать роботам, какую из версий страницы мы считаем основной и наиболее предпочитаемой для показа в результатах поиска. Для этого нужно указать ссылку на основную (каноническую) страницу в коде всех дублей:
Расскажем, как это делать и в каких ситуациях.
Как настроить rel canonical
Мы будем рассказывать про разные способы указать каноническую страницу, но суть у них одна: мы размещаем ссылку на нужную страницу на её дублях, чтобы поисковики понимали, какую индексировать в первую очередь.
Через атрибут в теге
Нужно разместить следующий код в теге страницы‑дубля, который содержится в блоке :
Код будет выглядеть так:
где https://site.ru/page/ — ссылка на нужную страницу.
Способ работает только с HTML‑страницами, но не с файлами, например, в формате PDF. Для таких файлов лучше использовать следующий вариант.
Через атрибут в заголовке HTTP
У не‑HTML‑документов нет раздела , поэтому для них используют этот способ.
❗️ Чтобы воспользоваться этой инструкцией, нужно иметь доступ к настройкам сервера.
Нужно разместить запись следующего типа в HTTP‑заголовке файла, который является дублем канонического:
HTTP/1.1 200 OK Content‑Type: application/pdf Link: ; rel="canonical"
где 200 OK — код ответа сервера, Content‑Type — тип файла, Link: — ссылка на канонический файл.
В файле Sitemap
Поисковые роботы предполагают, что все ссылки, размещённые в карте сайта, канонические. Google даже требует включать в Sitemap только канонические ссылки.
С помощью CMS
В зависимости от того, какую CMS вы используете на своём сайте, добавлять канониклы можно с помощью разных плагинов.
Так, в WordPress это плагин Yoast SEO, в Joomla — Canonical Url, в 1С‑Bitrix — «Канонические ссылки».
❗️ Про перенаправление через 301‑редирект
Если вы больше не хотите показывать те или иные версии страницы в индексе, можно настроить перенаправление с них на нужные страницы. Тогда первая страница будет отправлять пользователя на вторую.
Отличие от установки канонической страницы в том, что в случае с 301‑м редиректом страница вообще не будет показываться пользователям и в выдаче; а в случае с rel canonical её можно будет увидеть, но при этом она не будет приоритетной для ПС.
Когда нужно настраивать канонический тег
При дублировании страниц
Если вы точно знаете, что на сайте есть дубли страниц, нужно указать, какая из одинаковых страниц главная.
Найти дублирующиеся страницы можно с помощью панелей Яндекс Вебмастер и Google Search Console.
В Вебмастере нужно смотреть раздел «Индексирование» — «Страницы в поиске»: у дублирующихся страниц будет статус «Дубль».
В GSC нужно смотреть пункт с исключёнными страницами в разделе «Покрытие».
В Топвизоре найти дубликаты, а также битые ссылки, редиректы, ошибки загрузки и в тегах можно найти с помощью инструмента «Анализ сайта».
На страницах пагинации
Пагинация — это разделение контента на сайте на отдельные страницы. Когда пользователь открывает страницу, контент подгружается не весь сразу, а постранично. При этом образуется несколько страниц: первая, вторая, третья и т. д.

При разделении контента на несколько страниц может образоваться дубль основной страницы.
Представим, что вы хотите разделить товары в категории «Самокаты» на несколько страниц. В таком случае первая страница категории будет иметь адрес «site.ru/samokati/», но в то же время у нас появится и URL первой страницы пагинации — «site.ru/samokati/page1». Эти страницы могут быть восприняты поисковиками как дубли.
- настройте постоянный редирект с site.ru/samokati/page1 на site.ru/samokati/;
- проследите, чтобы ссылка с других страниц на первую вела на site.ru/samokati/, а не на site.ru/samokati/page1.
На всех страницах, начиная со второй, ставьте каноникал на первую страницу. Помните, что первая страница — это основная страница категории, а не page1.
Следите за тем, чтобы ссылка с других страниц на первую вела не на page1, а на основную страницу.
Если у сайта есть версии HTTPS, HTTP, www
Если в этом случае не указать canonical, ПС будут рассматривать все три версии сайта как наборы отдельных страниц.
Это может привести к проблемам с индексацией: мы уже рассказывали про распространенные сценарии: либо страницы склеятся и в индексе останется не та, что вам нужна, а остальные удалятся (в том числе и нужная); либо в индексе останутся все страницы, что может привести к каннибализации.
То же касается слешей на конце адресов: site.ru/samokati и site.ru/samokati/.
В мобильном URL
Это особенно актуально для Google, так как он уже давно ориентируется на мобильную версию сайта при индексации.
Вот что можно сделать, если у вас есть отдельная версия сайта, доступная по адресу типа m.site.ru:
- Укажите в коде мобильной версии сайта rel=”canonical”, который будет вести на десктопную версию.
- В десктопной версии укажите rel=“alternate” — этот атрибут будет вести на мобильную версию, показывая, что есть альтернативная версия, но не каноническая.
То же касается AMP‑страниц.
В динамических адресах
Когда человек переходит по рекламе, взаимодействует с фильтрами в каталоге, переходит в разные разделы сайта, образуются динамические адреса.
Допустим, мы зашли в раздел самокатов на сайте: site.ru/samokati/. Затем мы начали настраивать фильтры, чтобы увидеть все самокаты бренда «САМ» белого цвета. Получилось вот что:
site.ru/samokati/brand=SAM&color=white.
Таких комбинаций может быть много, поэтому из них нужно выделить главную и проставить в дубликатах ссылки на неё.
Когда не нужно настраивать канонический тег
Для набора сайта верхним и нижним регистром
Даже одни и те же адреса, написанные верхним регистром (ВОТ ТАК) и нижним (вот так), поисковики могут считать разными версиями сайта.
Но чтобы указать системе, что она должна применять только нижний регистр, нужно использовать не rel=”canonical”, а специальные записи в .htaccess‑файле сайта. Можете скопировать код отсюда:
RewriteEngine On RewriteBase / # If there are caps, set HASCAPS to true and skip next rule RewriteRule [A‑Z] — [E=HASCAPS:TRUE,S=1] # Skip this entire section if no uppercase letters in requested URL RewriteRule ![A‑Z] — [S=28] # Replace single occurance of CAP with cap, then process next Rule. RewriteRule ^([^A]*)A(.*)$ $1a$2 RewriteRule ^([^B]*)B(.*)$ $1b$2 RewriteRule ^([^C]*)C(.*)$ $1c$2 RewriteRule ^([^D]*)D(.*)$ $1d$2 RewriteRule ^([^E]*)E(.*)$ $1e$2 RewriteRule ^([^F]*)F(.*)$ $1f$2 RewriteRule ^([^G]*)G(.*)$ $1g$2 RewriteRule ^([^H]*)H(.*)$ $1h$2 RewriteRule ^([^I]*)I(.*)$ $1i$2 RewriteRule ^([^J]*)J(.*)$ $1j$2 RewriteRule ^([^K]*)K(.*)$ $1k$2 RewriteRule ^([^L]*)L(.*)$ $1l$2 RewriteRule ^([^M]*)M(.*)$ $1m$2 RewriteRule ^([^N]*)N(.*)$ $1n$2 RewriteRule ^([^O]*)O(.*)$ $1o$2 RewriteRule ^([^P]*)P(.*)$ $1p$2 RewriteRule ^([^Q]*)Q(.*)$ $1q$2 RewriteRule ^([^R]*)R(.*)$ $1r$2 RewriteRule ^([^S]*)S(.*)$ $1s$2 RewriteRule ^([^T]*)T(.*)$ $1t$2 RewriteRule ^([^U]*)U(.*)$ $1u$2 RewriteRule ^([^V]*)V(.*)$ $1v$2 RewriteRule ^([^W]*)W(.*)$ $1w$2 RewriteRule ^([^X]*)X(.*)$ $1x$2 RewriteRule ^([^Y]*)Y(.*)$ $1y$2 RewriteRule ^([^Z]*)Z(.*)$ $1z$2 # If there are any uppercase letters, restart at very first RewriteRule in file. RewriteRule [A‑Z] — [N] RewriteCond % TRUE RewriteRule ^/?(.*) /$1 [R=301,L]
Для контента на разных языках
Здесь ни rel=”canonical”, ни 301‑й редирект не подойдут: нужно не перенаправлять пользователей и поисковых роботов на те или иные страницы, а показывать разные результаты выдачи для разных стран, как бы «разделять» контент на разные языки. Для этого используют атрибут hreflang.
Его также вставляют в тег секции . Код будет выглядеть следующим образом:
где lang_code — код языка и региона, который соответствует версии страницы (например, ru_rus), а url_of_page — URL‑версии страницы для указанного языка и региона.
Как проверить canonical
Чтобы узнать, какая страница считается канонической в Google, нужно воспользоваться инструментом проверки URL.
В Яндекс Вебмастере нужно посмотреть «Индексирование» — «Страницы в поиске». Дубли после указания каноникла отобразятся в разделе «Исключённые из поиска» (но всё ещё будут видны пользователям).
Покажем, как это делать, на примере «Анализа сайта» в Топвизоре.
Чтобы найти страницы с rel canonical:
- Перейдите в инструмент «Анализ сайта» в левом меню и откройте «Страницы»:

- Перейдите в «Индексируемость»; в столбце «rel=canonical» наведите курсор на значок ссылки, чтобы посмотреть, куда ведёт страница. URL отобразится в левом нижнем углу.
Чтобы увидеть дубли:
- Перейдите в «Контент». В столбце «Дубли» у каждой страницы появится кнопка, обозначающая количество таких же страниц.

- Нажмите на количество страниц, чтобы появился полный список дублей конкретной страницы.

❗️ Мы обновили дизайн инструмента «Анализ сайта». Теперь аудит стал нагляднее, проще и функциональнее: ищите редиректы и битые ссылки, проверяйте индексируемость, атрибуты и теги.
Распространенные ошибки в настройке canonical
- Страницы заблокированы robots.txt
Если вы блокируете сканирование неканонических адресов в robots.txt, то роботы не увидят канонические страницы.
Если вы блокируете сканирование канонических страниц, вместо них в поиске может участвовать дубль, доступный роботу.
- Каноническая страница закрыта от индексирования
Бот не будет учитывать такую страницу.
- Используются и noindex, и rel=»canonical» для одной страницы
Директива noindex не заменяет и не объединяется с rel=”canonical”. noindex нужен для того, чтобы исключать страницы из индекса.
- Написаны два (или больше) атрибута rel=canonical
На странице не может быть указано несколько канониклов: бот или выберет первый из них, или вовсе проигнорирует указание.
- Канонические адреса образовали цепочку
Если вы указали какую‑то страницу канонической, а на ней — перенаправление на какую‑то другую страницу с помощью атрибута rel=”canonical”, бот не будет считать эту страницу канонической.
Запомните эту схему:

- В написании канонического адреса допущена ошибка
Теги link с атрибутом rel=»canonical» должны содержать абсолютные пути, а не относительные. Нужно указывать, как в браузере: https://site.ru/page/, а не /page/ — чтобы робот понял, куда идти.
- В атрибуте указана битая ссылка
Если вы указываете на неканонической странице адрес неработающей страницы с кодом состояния 4XX (например, знакомый всем 404 Not Found), робот ничего не поймёт и не отреагирует на указанное.
- В атрибуте указана ссылка на страницу с редиректом
Канонические ссылки указывают ботам на более предпочтительные версии страницы. А редирект говорит им, что нужно учитывать другой адрес. Поэтому тег rel=”canonical” может быть проигнорирован.
- Канонический адрес указывает на другой домен или поддомен
Ссылка должна указывать только на страницу на этом же сайте.
- Канонические страницы конфликтуют друг с другом
Например, если на Странице 1 указана канонической Страница 2, но при этом в карте сайта Sitemap.XML стоит ссылка на Страницу 1 — это конфликт канонических страниц.
Поисковый робот, опираясь на карту сайта, может определить Страницу 1 важной и проигнорировать каноникал.
- Каноническая ссылка ведет на нерелевантную страницу
Содержимое страницы, на которую вы пытаетесь перенаправить поискового бота, должно быть таким же, что и на странице‑дубле.
Если содержимое канонической страницы отличается от содержимого неканонической — например, на момент обхода неканонические страницы более полно отвечают на запрос пользователя, и их контент существенно отличается от канонических, — ПС может не учесть то, что вы указали.
- Тег rel=canonical использован в другой секции кода
Атрибут тега должен быть только в секции . Если он будет в или где‑то ещё, боты его проигнорируют.
- Главная выбрана канонической для всех страниц
Тогда боты могут проиндексировать только главную, а все остальные страницы — нет. И в выдаче у вас будет только одна страница.
❗️Изучите официальные руководства поисковиков по каноническим страницам
Форум
В настройках инфоблока разрешил выбор основного раздела для привязки, указал канонический URL элемента. В настройках товара указал основной раздел. В параметрах компонента bitrix:catalog поставил галочку на «Использовать основной раздел для показа элемента». В итоге ничего не изменилось. Подозреваю, что нужно вставить код «USE_MAIN_ELEMENT_SECTION» => «Y», но куда и где находится этот файл не могу найти.
Прикрепленные файлы
- Screenshot_1.png (24.66 КБ)
Заглянувший
Сообщений: 18 Регистрация: 14.03.2015
16.11.2015 12:25:56
Николай, вам удалось решить проблему?
У меня такая же ситуация. Все настроил по инструкции, а каноническая ссылка не добавляется.
Заглянувший
Сообщений: 4 Регистрация: 22.05.2014
16.11.2015 12:48:27
Добрый день!
К сожалению нет. Я написал в техподдержку битрикса, на что они мне ответили:
В настройках компонента поставил галочку «Устанавливать канонический URL».
Поставил, но на вашем шаблоне все равно не заработало.
После применения стандартного шаблона компонента проблема не наблюдается.
Скриншот во вложении.
Очевидно, что, при написании кода шаблона компонента, была допущена ошибка.
Эта ошибка не связана с работой ядра битрикса, так как на стандартном шаблоне ошибка не появляется.
Вам нужно обратиться к разработчикам вашего шаблона компонента для исправления ошибки.
Если вы разработали шаблон компонента, то вам нужно сравнить код вашего шаблона с кодом стандартного шаблона компонента для выявления ошибки.
Написал в техподдержку разработчикам шаблона — сказали исправят ошибку при следующем обновлении.
Как указать канонический адрес страницы в битрикс
Нашли ошибку? Выделите мышкой и нажмите Ctrl+Enter
Настройка канонических ссылок для новостей, статей и акций
Если вы размещаете одну и ту же информацию на нескольких страницах, поисковики реагируют на это негативно и понижают позиции сайта в выдаче. Исправить ситуацию помогут канонические ссылки. Поисковики будут ранжировать ту страницу, которая отмечена как основная, а дубликаты отметят как малозначительные.
Перед тем, как активировать использование канонических ссылок в одном из разделов сайта, настройте соответствующий задаче инфоблок.
Рассмотрим порядок действий на примере раздела «Акции». В административной части сайта перейдите в Контент → Инфоблоки → Типы инфоблоков → Контент → Акции. Далее, откройте вкладку инфоблока «Поля» и установите галку «Разрешить выбор основного раздела для привязки».
Переключитесь на вкладку «Инфоблок» и заполните «Канонический URL элемента». Вы можете скопировать значения поля «URL страницы детального просмотра», но вместо начала строки (в примере содержимое до слова /sale/) вставьте адрес вашего сайта. На скриншоте скопированная часть выделена красной линией.
После сохранения изменений перейдите в Контент → Контент → Акции и откройте карточку любой акции при помощи пункта «Изменить» меню кнопки Гамбургер.
Теперь нужно включить поле «Основной раздел». Если вы не настраивали под себя вкладки в настройках форм, то просто сбросьте настройки. Действие приведет к возврату настроек по умолчанию. В правом верхнем углу кликните на изображение шестеренки и в выпадающем меню выберите пункт «Отменить настройки формы».
Если вам нужно сохранить вкладки, то в правом верхнем углу кликните на изображение шестеренки и в выпадающем меню выберите пункт «Настройки».
Выделите «Акция» (1) в доступных вкладках, нажмите в доступных полях на «Основной раздел» (2) и перекиньте его в выбранные поля с помощью стрелочки (3). Сохраните (4).
После этого у вас появится новое поле «Основной раздел».
Инфоблок настроен, осталось включить использование канонических ссылок в настройках параметра компонента. Для этого перейдите в публичной части сайта в настраиваемый раздел, включите режим правки и наведите указатель на область списка элементов. В появившемся меню нажмите на изображение шестеренки.

В окне редактора параметров компонента перейдите к группе «Настройки детального просмотра» и поставьте галочку «Устанавливать канонический URL».

Система автоматически проставит в коде страниц раздела элемент link с атрибутом rel canonical, по которому поисковые системы могут заставить робота игнорировать все другие урлы, дублирующие содержание основной страницы.
Как добавить на 1С Битрикс ссылку canonical?
Проблема, что поисковики начали утверждать, у меня в два раза больше страниц, чем на самом деле (начали создавать дубли одних и тех же страниц). Выход один, указать каноническую страницу, но как реализовать?
Перечитал весь интеренет, ответа не нашел. Кто сталкивался, как решил?
Для catalog.section
в result_modifier.php
$arSection = CIblockSection::GetById($arResult["ID"])->GetNext(); $arResult['SECTION_PAGE_URL'] = $arSection['SECTION_PAGE_URL']; $cp = $this->__component; if (is_object($cp)) $cp->SetResultCacheKeys(array('SECTION_PAGE_URL'));
$APPLICATION->AddHeadString('',true);
Для catalog.element
в result_modifier.php
$arElement = CIblockElement::GetById($arResult["ID"])->GetNext(); $arResult['DETAIL_PAGE_URL'] = $arElement['DETAIL_PAGE_URL']; $cp = $this->__component; if (is_object($cp)) $cp->SetResultCacheKeys(array('DETAIL_PAGE_URL'));
$APPLICATION->AddHeadString('',true);
Всем спасибо кто откликнулся. Надеюсь данное решение кому то поможет вроде меня.
п.с. в техподдержке согласились со мной, что это необходимый функционал и обещали что добавят в будущую версию, правда не уточнили в какой именно релиз.
п.с. ребят, за вопросом не слежу (он востребован, комментарии постоянно появляются), решение возможно устарело. Напишите в ЛК правильный вариант, что бы я обновил решение в вопросе.
- Вопрос задан более трёх лет назад
- 38516 просмотров
4 комментария
Средний 4 комментария