Налаштування ЧПУ (семантичні URL) 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування ЧПУ (семантичні URL) 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування ЧПУ (семантичні URL) для Bitrix CMS

ЧПУ (человекопонятні URL) — це адреси на зразок /catalog/noutbuki/apple-macbook-pro-14/ замість /catalog/?ID=1234&ELEMENT_ID=5678. Bitrix підтримує ЧПУ для інфоблоків через механізм 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]

Bitrix додає це автоматично при установці, але якщо файл .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 годин.