1С-Битрикс

Canonical для всех страниц в 1С-Битрикс: решение проблемы отсутствующего тега

Как правильно настроить canonical для всех страниц в 1С-Битрикс. Решение проблемы отсутствующего тега rel=canonical с помощью правки footer.php и другие методы

sqlka.ruОпубликовано: Чтение: 3 мин.
Canonical для всех страниц в 1С-Битрикс: решение проблемы отсутствующего тега

Тег 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);
}
?>

Как работает этот код?

  1. Проверяет, задано ли для страницы свойство «canonical» вручную
  2. Если свойство отсутствует, формирует canonical из текущего URL
  3. Определяет протокол (HTTP/HTTPS) автоматически
  4. Добавляет тег в раздел <head> страницы

Важные исключения и настройки

1. Страницы пагинации (page=...)

Для пагинации используйте встроенные возможности Битрикс:

  1. В настройках компонента (например, news.list) установите «Использовать ЧПУ»
  2. В шаблоне компонента добавьте: $arResult['NAV_STRING']->addNavParams(array('CANONICAL' => $canonicalUrl));
  3. Настройте 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();

Проверка корректности настройки

  1. Откройте любую страницу сайта и посмотрите исходный код (Ctrl+U)
  2. Найдите тег <link rel="canonical" ... />
  3. Убедитесь, что URL соответствует основной версии страницы
  4. Проверьте разные варианты доступа (с www/без, http/https)
  5. Используйте инструменты 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-оптимизации. Для максимальной эффективности также рекомендуется:

  1. Настроить 301-редиректы со старых адресов
  2. Создать корректную карту сайта sitemap.xml
  3. Оптимизировать мета-теги (title, description)
  4. Настроить микроразметку Schema.org

Регулярный аудит canonical и других SEO-параметров поможет поддерживать видимость сайта в поисковых системах на высоком уровне.

Хотите освоить SQL для работы с данными?

В SQLka можно изучать SQL последовательно или готовиться к собеседованиям. Запросы выполняются прямо в браузере — устанавливать базу данных не нужно.

sqlka.ru

support@sqlka.ru

Дальше по теме

1С-Битрикс

Логирование в 1С-Битрикс: полное руководство для разработчика

Полное руководство по логированию в 1С-Битрикс: какие логгеры есть, как их настроить, форматировать сообщения и подключать к своим классам. Примеры кода и советы по использованию PSR-3

sqlka.ruЧтение: 4 мин.
← Все статьи