Top.Mail.Ru
АДВИЖЕН Digital
Разработка и сопровождение сайтов
zakaz@advigen.ru
+7 (812) 467-42-72
Стать клиентом plus icon
Создание сайтов
  • Корпоративные сайты
  • Интернет-магазины
  • Сайты на 1С-Битрикс
    • Сайты-визитки
    • Каталог + Услуги
    • Интернет-магазины
    • Переезд на Битрикс
    • Решения Аспро
  • Дизайн/редизайн
  • Одностраничные сайты
Поддержка и доработки
  • Аудит сайта
  • Битрикс поддержка
    • Доработка сайтов
    • Настроить обмен с 1С
    • Переход на PHP8
    • Ускорить сайт
    • Сайты на АСПРО
  • Администрирование
  • SEO-оптимизация
  • Удаление вирусов
  • Перенос на хостинг
CRM Битрикс24
Все услуги
  • Создание сайтов
    • Landing Page
    • Корпоративный сайт
    • Интернет магазин
    • Сайты на Битрикс
    • Сайты на шаблонах АСПРО
    • Перенос сайта на Битрикс
    • Сайты на Tilda
    • Дизайна сайта
  • CRM Битрикс24
    • Внедрение Битрикс24
    • Настройка Битрикс24
    • Бизнес процессы
    • Интернет-магазин + CRM
Найти услугу
АДВИЖЕН Digital
  • О компании
  • Отзывы
  • Примеры работ
  • Блог
  • 1С-Битрикс
  • Контакты
  • ...
    Создание сайтов
    • Корпоративные сайты
    • Интернет-магазины
    • Сайты на 1С-Битрикс
      • Сайты-визитки
      • Каталог + Услуги
      • Интернет-магазины
      • Переезд на Битрикс
      • Решения Аспро
    • Дизайн/редизайн
    • Одностраничные сайты
    Поддержка и доработки
    • Аудит сайта
    • Битрикс поддержка
      • Доработка сайтов
      • Настроить обмен с 1С
      • Переход на PHP8
      • Ускорить сайт
      • Сайты на АСПРО
    • Администрирование
    • SEO-оптимизация
    • Удаление вирусов
    • Перенос на хостинг
    CRM Битрикс24
    Все услуги
    • Создание сайтов
      • Landing Page
      • Корпоративный сайт
      • Интернет магазин
      • Сайты на Битрикс
      • Сайты на шаблонах АСПРО
      • Перенос сайта на Битрикс
      • Сайты на Tilda
      • Дизайна сайта
    • CRM Битрикс24
      • Внедрение Битрикс24
      • Настройка Битрикс24
      • Бизнес процессы
      • Интернет-магазин + CRM
      АДВИЖЕН Digital

      Меню

      АДВИЖЕН Digital
      • Создание сайтов
        • Создание сайтов
        • Корпоративные сайты
        • Интернет-магазины
        • Сайты на 1С-Битрикс
          • Сайты на 1С-Битрикс
          • Сайты-визитки
          • Каталог + Услуги
          • Интернет-магазины
          • Переезд на Битрикс
          • Решения Аспро
        • Дизайн/редизайн
        • Одностраничные сайты
      • Поддержка и доработки
        • Поддержка и доработки
        • Аудит сайта
        • Битрикс поддержка
          • Битрикс поддержка
          • Доработка сайтов
          • Настроить обмен с 1С
          • Переход на PHP8
          • Ускорить сайт
          • Сайты на АСПРО
        • Администрирование
        • SEO-оптимизация
        • Удаление вирусов
        • Перенос на хостинг
      • CRM Битрикс24
      • Все услуги
        • Все услуги
        • Создание сайтов
          • Создание сайтов
          • Landing Page
          • Корпоративный сайт
          • Интернет магазин
          • Сайты на Битрикс
          • Сайты на шаблонах АСПРО
          • Перенос сайта на Битрикс
          • Сайты на Tilda
          • Дизайна сайта
        • CRM Битрикс24
          • CRM Битрикс24
          • Внедрение Битрикс24
          • Настройка Битрикс24
          • Бизнес процессы
          • Интернет-магазин + CRM
      Стать клиентом plus icon
      • +7 (812) 467-42-72
        • Телефоны
        • +7 (812) 467-42-72
      • Санкт-Петербург, Богатырский пр., 12
      • pro@advigen.ru
      • Пн. – Пт.: с 9:30 до 18:00
      Главная
      —
      Блог
      —
      Статьи о поддержке сайта
      —Добавляем тег rel=canonical на страницы сайта Битрикс

      Добавляем тег rel=canonical на страницы сайта Битрикс

      Поддержка сайта
      3514


      8 августа 2024
      Администратор
      Веб студия АДВИЖЕН Digital
      Адвижен Digital

      Задача:

      Добавить на сайте тег rel="canonical", чтобы убрать дубли в Каталоге и Информационных страницах.

      • Для детальной страниц каталога будем использовать типовой функционал 1С-Битрикс через настройки компонента и инфоблока.
      • Для всех остальных случаев, будем использовать свой код.

      Шаг 1. Выводим тег canonical на детальной странице товара

      На сайте, на котором мы выполняли эту задачу были дубли одного и того же товара, хотя сам товар в инфоблоке был привязан физически к одному подразделу. Вот пример дублей одного товара в структуре каталога

      • /catalog/instrument-dlya-montazha/zaklyepochniki/2187/
      • /catalog/instrument-dlya-montazha/2187/
      • /catalog/ruchnoy_instrument/2187/

      Первым делом выполняем простую задачу, т.е. идем в настройки Инфоблока и настройки Компонента и следуем рекомендациям описанным на официальном сайте 1С-Битрикс: https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=34&LESSON_ID=7199.

      Далее, в код комплексного компонента добавляем строчку "DETAIL_SET_CANONICAL_URL" => "Y",

      Проверяем, что у нас получилось!

      Теперь при переходе на страницы указанные в нашем примере в коде сайте отображается постоянный тег, в котором указан правильный путь до этого товара

      < link rel=" canonical" href="https://SITE.RU/catalog/instrument-dlya-montazha/zaklyepochniki/2187/" />

      Теперь можно переходить к самописному коду для всего сайта, кроме карточки товара.

      Шаг 2. Пишем кастомный код для вывода тега canonical для остальных случаев

      Что будет делает этот код:

      • Формировать базовый URL без порта и с HTTPS.
      • Очищать текущий URL от /index.php и параметров фильтра, если это необходимо.
      • Добавлять / в конец URL, если это не .php или .html.
      • Исключать страницы с ID товара из канонического тега и формирует правильный канонический URL для остальных страниц.

      Описание кода

      1. Определяем базовый URL:
        $protocol = 'https://';  // Используется HTTPS
        $host = $_SERVER['HTTP_HOST'];
        $host = preg_replace('/:\d+$/', '', $host);
        $baseUrl = $protocol . $host;
        
        • Определяем протокол (https://) и домен сайта ($_SERVER['HTTP_HOST']).
        • Удаляем порт из домена, если он присутствует (preg_replace('/:\d+$/', '', $host)).
        • Формируем базовый URL сайта ($baseUrl).
      2. Получаем текущий URL для канонического тега:
        $canonicalUrl = $APPLICATION->GetCurPage(true);
        $canonicalUrl = preg_replace('/\/index\.php$/', '', $canonicalUrl);
        
        • Получаем текущий URL страницы, используя метод $APPLICATION->GetCurPage(true).
        • Убираем /index.php из конца URL, если он присутствует.
      3. Добавляем обработку страниц смарт фильтра в Каталоге:
        if (strpos($canonicalUrl, '/filter/') !== false) {
            $parentSectionUrl = preg_replace('/\/filter\/.*$/', '', $canonicalUrl);
            $parentSectionUrl = preg_replace('/\/index\.php$/', '', $parentSectionUrl);
            $canonicalUrl = $parentSectionUrl;
        }
        
        • Если URL содержит /filter/, обрабатываем его, чтобы получить URL родительского раздела (без параметров фильтра).
        • Убираем /index.php из родительского URL, если он присутствует.
      4. Добавляем / в конец URL:
        if (!preg_match('/\.(php|html)$/', $canonicalUrl)) {
            $canonicalUrl = rtrim($canonicalUrl, '/') . '/';
        }
        
        • Проверяем, что URL заканчивается на /, если он не заканчивается на .php или .html.
      5. Добавляем проверка на детальную страницу товара и вывод канонического тега:
        if (!preg_match('/\/\d+\/$/', $canonicalUrl)) {
            $canonicalFullUrl = $baseUrl . $canonicalUrl;
            if ($baseUrl . $_SERVER['REQUEST_URI'] !== $canonicalFullUrl) {
                echo '';
            }
        }
        
        • Проверяем, является ли текущая страница детальной страницей товара по наличию ID товара в URL (preg_match('/\/\d+\/$/', $canonicalUrl)).
        • Формируем полный канонический URL и добавляем его в <link rel="canonical">, если он отличается от текущего URL страницы.
        • Проверяем, является ли текущая страница детальной страницей товара по наличию ID товара в URL (preg_match('/\/\d+\/$/', $canonicalUrl)).
        • Формируем полный канонический URL и добавляем его в <link rel="canonical">, если он отличается от текущего URL страницы.
      6. Готовый код нужно поместить до закрывающегося тега head (файл header.php в шаблоне сайта)

        Этот код поможет корректно формировать канонический URL для вашего сайта, учитывая специфические условия для фильтров и детальных страниц товаров.

      Читайте также

      Поддержка сайта
      08 января 2026
      249
      Логирование PHP ошибок после обновления ядра Битрикса / пере...
      Поддержка сайта
      22 ноября 2024
      2282
      Отключаем ленивую загрузку изображений (lazyload)
      Поддержка сайта
      18 октября 2024
      4512
      Как запретить доступ к сайту для иностранных IP адресов
      Поддержка сайта
      08 октября 2024
      3917
      Кодировка поля "SITE_ID" таблицы "b_abtest&qu...
      Поддержка сайта
      13 августа 2024
      2962
      Как узнать какие таблицы БД в Битрикс имеют большой объем да...
      Поддержка сайта
      01 августа 2024
      2178
      Как узнать какие свойства инфоблока не заполнены у товаров и...
      Поддержка сайта
      27 мая 2024
      1686
      РейтингРунета 2024 обновился
      Поддержка сайта
      08 мая 2024
      1400
      Поздравляем вас с Днем Победы!
      Назад к списку


      • Веб-аналитика 1
      • Интернет-маркетинг 2
      • Контекстная реклама 4
      • Новости 13
      • Обмен с 1С 6
      • Поддержка сайта 18
      • Таргетированная реклама 3
      ВК Интернет-маркетинг Контекстная реклама Маркетинг Одноклассники Таргет УТП Яндекс Директ
      +7 (812) 467-42-72
      -->
      • О компании
      • Отзывы
      • Примеры работ
      • Блог
      • 1С-Битрикс
      • Контакты
      • ...
        Мы в социальных сетях
        Создание сайтов
        Корпоративный сайт
        Интернет магазин
        Поддержка сайтов
        Администрирование
        Доработка сайтов на Битриксе
        Доработка решений АСПРО
        Аудит сайтов 1С-Битрикс
        Комплексное продвижение
        SEO продвижение
        Контекстная реклама
        Таргетированная реклама
        Электронная коммерция
        Сквозная аналитика
        CRM Битрикс24
        Внедрение CRM
        Настройка CRM
        Бизнес процессы
        Интернет-магазин + CRM
        © 2026 АДВИЖЕН
        Политика конфиденциальности
        Подписаться на рассылку