Тег rel="canonical" — важный элемент SEO-оптимизации, который указывает поисковым системам основную (каноническую) версию страницы. В 1С-Битрикс автоматическая генерация canonical работает не всегда корректно, что приводит к появлению дублей и ухудшению позиций сайта. В этой статье разберем, как гарантированно проставить canonical на всех страницах.
Зачем нужен canonical в Битрикс?
Сайты на 1С-Битрикс часто имеют несколько адресов для одного контента из-за:
- Доступа по HTTP и HTTPS
- Разных вариантов ЧПУ (с www и без, с окончанием / и без)
- Параметров сортировки и фильтрации
- Сессионных идентификаторов
Канонический тег сообщает поисковикам, какая страница является основной, предотвращая санкции за дублированный контент.
Решение: универсальный код для всех страниц
Для автоматического добавления canonical на страницы, где он отсутствует, добавьте в конец файла /bitrix/footer.php следующий код:
<?php
// Canonical для всех страниц, кроме пагинаций
if($APPLICATION->GetPageProperty('canonical') == '') {
$protocol = CMain::IsHTTPS() ? 'https' : 'http';
$canonicalUrl = $protocol . '://' . SITE_SERVER_NAME . $APPLICATION->GetCurPage();
$APPLICATION->AddHeadString('<link rel="canonical" href="' . $canonicalUrl . '" />', true);
}
?>
Как работает этот код?
- Проверяет, задано ли для страницы свойство «canonical» вручную
- Если свойство отсутствует, формирует canonical из текущего URL
- Определяет протокол (HTTP/HTTPS) автоматически
- Добавляет тег в раздел <head> страницы
Важные исключения и настройки
1. Страницы пагинации (page=...)
Для пагинации используйте встроенные возможности Битрикс:
- В настройках компонента (например, news.list) установите «Использовать ЧПУ»
- В шаблоне компонента добавьте:
$arResult['NAV_STRING']->addNavParams(array('CANONICAL' => $canonicalUrl));
- Настройте canonical в модуле «Поисковая оптимизация»
2. Страницы с фильтрами и сортировкой
Для каталогов с фильтрацией рекомендуется:
<?php
// В шаблоне компонента catalog.section
if(empty($arResult['CANONICAL'])) {
$filter = new \Bitrix\Main\Filter\Filter();
$canonical = $filter->getCanonical();
if($canonical) {
$APPLICATION->SetPageProperty('canonical', $canonical);
}
}
?>
3. Динамические страницы (SEF-режим)
Для правильной работы в режиме ЧПУ убедитесь, что в настройках главного модуля включено:
define("SEF_DEFAULT", true);
$arSEFVariables = array();
Проверка корректности настройки
- Откройте любую страницу сайта и посмотрите исходный код (Ctrl+U)
- Найдите тег
<link rel="canonical" ... />
- Убедитесь, что URL соответствует основной версии страницы
- Проверьте разные варианты доступа (с www/без, http/https)
- Используйте инструменты Google Search Console → Проверка URL
Распространенные ошибки
- Дублирование тегов: Проверьте, не добавляется ли canonical дважды
- Относительные URL: Canonical всегда должен содержать абсолютный адрес
- Неправильный протокол: Для HTTPS-сайтов canonical тоже должен быть HTTPS
- Индексация служебных страниц: Добавьте исключения для служебных скриптов
Альтернативные методы настройки
Через модуль SEO
В стандартном модуле «Поисковая оптимизация» (seo) можно настроить:
<?php
// В init.php
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'main',
'OnPageStart',
function() {
$seo = new \Bitrix\Seo\Engine\Bitrix();
$seo->setCanonical();
}
);
?>
Через .htaccess (для Apache)
Дополнительная настройка для устранения дублей:
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{REQUEST_METHOD} GET
RewriteRule ^(.*)/$ /$1 [R=301,L]
Оптимизация для SEO
Правильная настройка canonical — часть комплексной SEO-оптимизации. Для максимальной эффективности также рекомендуется:
- Настроить 301-редиректы со старых адресов
- Создать корректную карту сайта sitemap.xml
- Оптимизировать мета-теги (title, description)
- Настроить микроразметку Schema.org
Регулярный аудит canonical и других SEO-параметров поможет поддерживать видимость сайта в поисковых системах на высоком уровне.
Тег rel="canonical" — важный элемент SEO-оптимизации, который указывает поисковым системам основную (каноническую) версию страницы. В 1С-Битрикс автоматическая генерация canonical работает не всегда корректно, что приводит к появлению дублей и ухудшению позиций сайта. В этой статье разберем, как гарантированно проставить canonical на всех страницах.
Зачем нужен canonical в Битрикс?
Сайты на 1С-Битрикс часто имеют несколько адресов для одного контента из-за:
Канонический тег сообщает поисковикам, какая страница является основной, предотвращая санкции за дублированный контент.
Решение: универсальный код для всех страниц
Для автоматического добавления canonical на страницы, где он отсутствует, добавьте в конец файла /bitrix/footer.php следующий код:
Как работает этот код?
Важные исключения и настройки
1. Страницы пагинации (page=...)
Для пагинации используйте встроенные возможности Битрикс:
$arResult['NAV_STRING']->addNavParams(array('CANONICAL' => $canonicalUrl));2. Страницы с фильтрами и сортировкой
Для каталогов с фильтрацией рекомендуется:
3. Динамические страницы (SEF-режим)
Для правильной работы в режиме ЧПУ убедитесь, что в настройках главного модуля включено:
Проверка корректности настройки
<link rel="canonical" ... />Распространенные ошибки
Альтернативные методы настройки
Через модуль SEO
В стандартном модуле «Поисковая оптимизация» (seo) можно настроить:
Через .htaccess (для Apache)
Дополнительная настройка для устранения дублей:
Оптимизация для SEO
Правильная настройка canonical — часть комплексной SEO-оптимизации. Для максимальной эффективности также рекомендуется:
Регулярный аудит canonical и других SEO-параметров поможет поддерживать видимость сайта в поисковых системах на высоком уровне.