Настройка ЧПУ (семантические URL) 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка ЧПУ (семантические URL) 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1173
  • 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С Предприятие для компании МИРСАНБЕЛ
    745
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка ЧПУ (семантические URL) 1С-Битрикс

ЧПУ (человекопонятные URL) — это адреса вида /catalog/noutbuki/apple-macbook-pro-14/ вместо /catalog/?ID=1234&ELEMENT_ID=5678. Битрикс поддерживает ЧПУ для инфоблоков через механизм URL_TEMPLATES в настройках инфоблока и шаблонах компонентов. Без правильной настройки компоненты генерируют некрасивые URL с параметрами, которые плохо индексируются.

Настройка URL-шаблонов инфоблока

В настройках инфоблока (Контент → Инфоблоки → [инфоблок] → Редактировать) во вкладке «ЧПУ настройки» задаются четыре шаблона:

Шаблон Пример
Страница элемента /catalog/#SECTION_CODE_PATH#/#CODE#/
Страница раздела /catalog/#SECTION_CODE_PATH#/
Список элементов /catalog/
Страница раздела (тип 2) (не обязателен)

#CODE# — символьный код элемента. #SECTION_CODE_PATH# — путь из символьных кодов всех родительских разделов через /. #ID# — числовой ID (хуже для SEO).

Символьные коды (CODE) должны быть заполнены у всех разделов и элементов. При импорте из 1С или Excel они часто не передаются — нужно предусмотреть автогенерацию кода из названия (транслитерация) или принудительную генерацию через скрипт.

Настройка компонентов

Компоненты bitrix:catalog, bitrix:news, bitrix:news.detail и другие инфоблочные компоненты принимают параметр SEF_MODE = Y и набор параметров SEF_URL_TEMPLATES:

$APPLICATION->IncludeComponent('bitrix:catalog', '', [
    'IBLOCK_ID'        => 5,
    'SEF_MODE'         => 'Y',
    'SEF_FOLDER'       => '/catalog/',
    'SEF_URL_TEMPLATES' => [
        'section'         => '#SECTION_CODE_PATH#/',
        'element'         => '#SECTION_CODE_PATH#/#CODE#/',
        'compare'         => 'compare/',
    ],
    'VARIABLE_ALIASES' => [
        'PAGEN_1'  => 'page',
    ],
]);

SEF_FOLDER — базовый путь компонента. Все URL, которые компонент генерирует, строятся относительно него. VARIABLE_ALIASES позволяет сделать постраничную навигацию более читаемой: /catalog/noutbuki/page/2/ вместо /catalog/noutbuki/?PAGEN_1=2.

Настройка в .htaccess / nginx

ЧПУ работает через перезапись URL на PHP-обработчик. В корне сайта файл .htaccess должен содержать правило RewriteRule, которое перенаправляет все запросы к несуществующим файлам на index.php:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L]

Битрикс добавляет это правило автоматически при установке, но если файл .htaccess был перезаписан — правило нужно восстановить.

Для nginx аналогичная конфигурация:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

Автогенерация символьных кодов

При добавлении нового элемента через административную форму символьный код можно сгенерировать автоматически из названия через транслитерацию. В настройках инфоблока Настройки ЧПУ → Автоматически генерировать символьный код. Правила транслитерации настраиваются в Настройки → Настройки продукта → Транслитерация.

Для массового заполнения пустых кодов у существующих элементов:

$res = \CIBlockElement::GetList([], ['IBLOCK_ID' => 5, 'CODE' => false]);
$el = new \CIBlockElement();
while ($item = $res->Fetch()) {
    $code = \CUtil::translit($item['NAME'], 'ru', [
        'max_len'        => 100,
        'change_case'    => 'L',
        'replace_space'  => '-',
        'replace_other'  => '-',
        'delete_repeat'  => true,
    ]);
    $el->Update($item['ID'], ['CODE' => $code]);
}

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

Настройка ЧПУ для одного инфоблока (URL-шаблоны, параметры компонента, .htaccess) — 1–2 часа. Если дополнительно нужна массовая генерация символьных кодов и настройка 301-редиректов со старых URL — 3–5 часов.