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
      Создание сайтов
      • Корпоративные сайты
      • Интернет-магазины
      • Сайты на 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
        • zakaz@advigen.ru
        • Пн. – Пт.: с 9:30 до 18:00
        Главная
        —
        Блог
        —
        Статьи о поддержке сайта
        —Добавляем тег rel=canonical на страницы сайта Битрикс

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

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


        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 для вашего сайта, учитывая специфические условия для фильтров и детальных страниц товаров.

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

        Поддержка сайта
        22 ноября 2024
        947
        Отключаем ленивую загрузку изображений (lazyload)
        Поддержка сайта
        18 октября 2024
        1602
        Как запретить доступ к сайту для иностранных IP адресов
        Поддержка сайта
        08 октября 2024
        1353
        Кодировка поля "SITE_ID" таблицы "b_abtest&qu...
        Поддержка сайта
        13 августа 2024
        1368
        Как узнать какие таблицы БД в Битрикс имеют большой объем да...
        Поддержка сайта
        01 августа 2024
        795
        Как узнать какие свойства инфоблока не заполнены у товаров и...
        Поддержка сайта
        27 мая 2024
        996
        РейтингРунета 2024 обновился
        Поддержка сайта
        08 мая 2024
        741
        Поздравляем вас с Днем Победы!
        Поддержка сайта
        08 мая 2024
        751
        Актуальный режим работы в майские праздники
        Назад к списку


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