ЧПУ Битрикс

Конфигурации ЧПУ (человекопонятных URL) для новостного раздела с использованием инфоблоков и компонента bitrix:news. Рассмотрим различные сценарии маршрутизации с акцентом на параметры ЧПУ, SEF (Search Engine Friendly).


Сценарий 1: Плоская структура без подразделов

Цель: site.ru/news/news-name/

  1. Настройки инфоблока:

    • URL страницы инфоблока: #SITE_DIR#/news/
    • URL детальной страницы: #SITE_DIR#/news/#ELEMENT_CODE#/
  2. Конфигурация компонента:

"SEF_FOLDER" => "/news/",
"SEF_URL_TEMPLATES" => [
    "news" => "",          // Корень раздела
    "section" => "",       // Игнорируется (нет подразделов)
    "detail" => "#ELEMENT_CODE#/", 
]

Примечание: Параметр #ELEMENT_CODE# генерирует уникальный семантический URL элемента.


Сценарий 2: Иерархическая структура с подразделами

Цель: site.ru/news/section/news-name/

  1. Настройки инфоблока:

    • URL инфоблока: #SITE_DIR#/news/
    • URL раздела: #SITE_DIR#/news/#SECTION_CODE#/
    • URL детальной страницы: #SITE_DIR#/news/#SECTION_CODE#/#ELEMENT_CODE#/
  2. Конфигурация компонента:

"SEF_FOLDER" => "/news/",
"SEF_URL_TEMPLATES" => [
    "news" => "",
    "section" => "#SECTION_CODE#/",     // Динамический код раздела
    "detail" => "#SECTION_CODE#/#ELEMENT_CODE#/", 
]

Особенность: URL включает цепочку раздел/элемент, что требует корректной настройки связей в инфоблоке.


Сценарий 3: Мультираздельное отображение с единым URL элемента

Цель: Новость доступна в site.ru/news/section1/ и site.ru/news/section2/, но имеет единый URL: site.ru/news/news-name/

  1. Настройки инфоблока:

    • URL инфоблока: #SITE_DIR#/news/
    • URL раздела: #SITE_DIR#/news/#SECTION_CODE_PATH#/
    • URL детальной страницы: #SITE_DIR#/news/#ELEMENT_CODE#/
  2. Конфигурация компонента:

"SEF_FOLDER" => "/news/",
"SEF_URL_TEMPLATES" => [
    "news" => "",
    "section" => "#SECTION_CODE_PATH#/", // Полный путь раздела
    "detail" => "#ELEMENT_CODE#/",       // Независимый от раздела URL
]

Ключевой момент: Использование #SECTION_CODE_PATH# позволяет сохранить иерархию разделов, но детальная страница исключает их из пути.


Сценарий 4: Использование префикса для элементов

Цель: site.ru/news/element/news-name/

  1. Настройки инфоблока:

    • URL инфоблока: #SITE_DIR#/news/
    • URL раздела: #SITE_DIR#/news/#SECTION_CODE#/
    • URL детальной страницы: #SITE_DIR#/news/element/#ELEMENT_CODE#/
  2. Конфигурация компонента:

"SEF_FOLDER" => "/news/",
"SEF_URL_TEMPLATES" => [
    "news" => "",
    "section" => "#SECTION_CODE#/",
    "detail" => "element/#ELEMENT_CODE#/", // Префикс для элементов
]

Преимущество: Исключает конфликты между SECTION_CODE и ELEMENT_CODE.


Работа с файлом urlrewrite.php

Файл urlrewrite.php содержит правила маршрутизации. Пример конфигурации для обработки запросов /news/:

0 => [
    'CONDITION' => '#^/news/#',
    'RULE' => '',
    'ID' => 'bitrix:news',
    'PATH' => '/news/index.php',
    'SORT' => 100,
],

Важно:

  • Файл автоматически генерируется при сохранении компонента через админ-интерфейс.
  • Ручная модификация требует соблюдения синтаксиса и очистки кеша.

Рекомендации:

  1. После изменения настроек выполните Очистку кеша.
  2. Для верификации URL проверьте корректность правил в urlrewrite.php.