Настройка канонических URL 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка канонических URL 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка канонических URL 1С-Битрикс

Дублированный контент — одна из частых SEO-проблем в Битрикс. Один и тот же товар доступен по нескольким URL: через раздел каталога, через поиск, с GET-параметрами фильтра, с параметрами сессии. Без тега <link rel="canonical"> поисковик сам решает, какой URL считать основным — и не всегда правильно.

Где в Битрикс возникают дубли URL

  • Товар доступен из нескольких разделов каталога (инфоблок с множественной привязкой к разделам)
  • Страница с GET-параметрами: /catalog/?sort=price&order=asc и /catalog/
  • Страница умного фильтра без SEF: /catalog/?arrFilter_P1=100&set_filter=Y
  • HTTP и HTTPS версии
  • С www и без

Canonical через компонент

В стандартных компонентах Битрикс (bitrix:catalog.element, bitrix:catalog.section) нет встроенного вывода canonical-тега. Его нужно добавлять в шаблон компонента.

В шаблоне template.php карточки товара:

// Получить канонический URL элемента
$canonicalUrl = $APPLICATION->GetCurDir() . CIBlockElement::GetDetailPageUrl(
    $arResult['IBLOCK']['DETAIL_PAGE_URL'],
    $arResult
);

// Вывести в HEAD через AddHeadString
$APPLICATION->AddHeadString(
    '<link rel="canonical" href="https://site.ru' . htmlspecialchars($canonicalUrl) . '" />',
    true
);

Canonical для страниц с фильтром

Страницы умного фильтра с непустыми параметрами должны иметь canonical на базовую страницу раздела или на SEF-URL фильтра (если используется ЧПУ для фильтра).

В шаблоне компонента умного фильтра или раздела:

$isFiltered = !empty($_REQUEST['set_filter']) || !empty($_REQUEST['arrFilter_P1']);
if ($isFiltered) {
    $canonicalUrl = $APPLICATION->GetCurPage(); // только путь без GET-параметров
    $APPLICATION->AddHeadString('<link rel="canonical" href="https://site.ru' . $canonicalUrl . '" />');
}

Canonical для пагинации

Страницы /catalog/?PAGEN_1=2 — спорный момент. Варианты:

  • Canonical на первую страницу (агрессивно, теряет ссылочный вес)
  • Не ставить canonical, но использовать rel="prev" / rel="next" (устаревший подход, Google не учитывает)
  • Уникальный canonical для каждой страницы пагинации (рекомендуется при уникальном контенте на каждой странице)

Глобальная настройка canonical через init.php

Для централизованной установки canonical без изменения каждого шаблона:

// /local/php_interface/init.php
AddEventHandler('main', 'OnEndBufferContent', function(&$content) {
    global $APPLICATION;
    $canonical = 'https://site.ru' . $APPLICATION->GetCurPage();
    $tag = '<link rel="canonical" href="' . htmlspecialchars($canonical) . '" />';
    $content = str_replace('</head>', $tag . '</head>', $content);
});

Подход грубый — подходит для простых сайтов. Для каталогов с фильтрами нужна логика исключений.

Сроки выполнения

Настройка canonical для карточек товаров и разделов каталога — 2–4 часа. Полная реализация с обработкой страниц фильтра, пагинации и кастомных URL — 4–8 часов.