Блог
Назад к статьям

1С-Битрикс: как настроить canonical через SetPageProperty и ShowMeta

Пошаговая настройка canonical в 1С-Битрикс через свойства страницы: SetPageProperty, SetDirProperty и ShowMeta с проверкой результата и типичными ошибками.

24 апреля 2026 г.
8
Backendproductionbitrixseocanonicalнастройка
1С-Битрикс: как настроить canonical через SetPageProperty и ShowMeta

Запрос, с которым обычно приходят: в индексе появляются дубли страниц, а canonical либо не выводится, либо выводится не там, где ожидается. В 1С-Битрикс это решается штатно через свойства страницы и раздела: SetPageProperty, SetDirProperty, ShowMeta. Ниже только рабочая схема по официальной документации, без кастомной магии.

Официальные источники:

  • https://docs.1c-bitrix.ru/pages/cms-basics/page-templates.html
  • https://docs.1c-bitrix.ru/api/classes/CAllMain.html#method_SetPageProperty
  • https://docs.1c-bitrix.ru/api/classes/CAllMain.html#method_SetDirProperty
  • https://docs.1c-bitrix.ru/api/classes/CAllMain.html#method_ShowMeta
  • https://docs.1c-bitrix.ru/api/classes/CAllMain.html#method_GetProperty
В чем проблема

Типовые симптомы:

  • canonical вообще отсутствует в <head>;
  • canonical задается, но не на всех страницах раздела;
  • в шаблоне есть вывод meta-тегов, но canonical не появляется;
  • на разных URL с одинаковым контентом нет единого канонического адреса.

Почему это происходит в Битрикс:

  • свойство canonical задано на странице, но в шаблоне не выведено через ShowMeta;
  • canonical ожидают из .section.php, но используют SetPageProperty вместо SetDirProperty;
  • свойство называется не так, как параметр в ShowMeta;
  • задают свойство поздно и не проверяют итоговый HTML.

Документация по шаблонам страниц прямо указывает, что поведение страницы определяется свойствами, которые можно задавать на уровне страницы и раздела: https://docs.1c-bitrix.ru/pages/cms-basics/page-templates.html#svojstva-stranic.

Рабочее решение

Ниже схема из трех шагов: вывод свойства в шаблоне, установка на странице, установка на раздел.

Шаг 1. Выводим canonical в head через ShowMeta

В шаблоне сайта (обычно в служебной части шапки) добавляем вывод свойства canonical:

<?php
// В head шаблона сайта
$APPLICATION->ShowMeta("canonical", "canonical");

Метод ShowMeta документирован в API CAllMain и выводит мета-тег для указанного свойства:

https://docs.1c-bitrix.ru/api/classes/CAllMain.html#method_ShowMeta

Если canonical уже хранится в свойстве canonical, второй параметр можно не дублировать. Но в практической настройке удобнее явно фиксировать имя meta-поля.

Шаг 2. Задаем canonical для конкретной страницы

В нужной странице задаем свойство canonical:

<?php
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");

$APPLICATION->SetPageProperty("canonical", "https://example.ru/catalog/item-1/");
$APPLICATION->SetTitle("Карточка товара");

?>
<p>Контент страницы</p>
<?php require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php"); ?>

Метод SetPageProperty:

https://docs.1c-bitrix.ru/api/classes/CAllMain.html#method_SetPageProperty

Шаг 3. Задаем canonical на уровень раздела

Когда нужно единое поведение для раздела, используем SetDirProperty (обычно в .section.php):

<?php
// /catalog/.section.php
$sSectionName = "Каталог";
$arDirProperties = [];

$APPLICATION->SetDirProperty("canonical", "https://example.ru/catalog/");

Метод SetDirProperty:

https://docs.1c-bitrix.ru/api/classes/CAllMain.html#method_SetDirProperty

Шаг 4. Проверяем текущее значение свойства в коде

Для диагностики можно проверить, какое значение реально видит страница:

<?php
$canonical = $APPLICATION->GetProperty("canonical");
if ($canonical !== "") {
    echo "<pre>canonical: " . htmlspecialchars($canonical, ENT_QUOTES, "UTF-8") . "</pre>";
}

Метод GetProperty:

https://docs.1c-bitrix.ru/api/classes/CAllMain.html#method_GetProperty

Проверка результата

Проверяем, что canonical реально попал в итоговый HTML страницы.

curl -s https://example.ru/catalog/item-1/ | grep -i canonical

Ожидаемый результат:

<meta name="canonical" content="https://example.ru/catalog/item-1/">

Если у вас в проекте принято использовать &lt;link rel=&quot;canonical&quot;&gt;, это отдельная реализация в шаблоне. В этой статье рассматривается именно документированная схема через свойства и ShowMeta.

Типичные ошибки

❌ Ошибка: свойство задают, но не выводят.

Причина: есть SetPageProperty, но нет ShowMeta в head.

Как исправить: добавить вызов ShowMeta(&quot;canonical&quot;, &quot;canonical&quot;) в шаблон.

❌ Ошибка: ждут, что значение из раздела применится, но задают на странице.

Причина: путают SetPageProperty и SetDirProperty.

Как исправить: для раздела использовать SetDirProperty.

❌ Ошибка: canonical «пустой» в HTML.

Причина: разное имя свойства при установке и выводе (например, canon_url и canonical).

Как исправить: унифицировать идентификатор свойства во всех местах.

❌ Ошибка: проверяют только в браузере и не видят реальный HTML после правок.

Причина: не выполняют проверку через curl.

Как исправить: всегда проверять итоговую разметку командой из раздела выше.

Где применять
  • SEO-настройка карточек и разделов каталога.
  • Проекты с дублирующими URL в публичной части.
  • Миграции и реструктуризация URL, где важно зафиксировать канонический адрес.
  • Поддержка больших разделов, где свойства удобнее задавать на уровне .section.php.

Полезно дополнительно:

  • https://viku-lov.ru/blog/bitrix-local-folder-project-structure
  • https://viku-lov.ru/blog/migraciya-s-wordpress-na-bitrix-bez-poteri-seo