Шаг 1. Включить поддержку ЧПУ
В комплексном компоненте каталога или новостей есть параметр «Включить поддержку ЧПУ» (SEF_MODE). Пока он выключен, адреса формируются через параметры вида ?ID=125&SECTION_ID=7.
Рядом задаётся каталог ЧПУ (SEF_FOLDER) — базовый путь, от которого строятся все адреса раздела, например /catalog/.
Шаг 2. Настроить шаблоны путей
После включения появляется группа настроек с шаблонами для каждой страницы компонента. Типовая схема для каталога:
Список разделов: #SECTION_CODE_PATH#/
Список элементов: #SECTION_CODE_PATH#/
Детальная страница: #SECTION_CODE_PATH#/#ELEMENT_CODE#/
Сравнение: compare/
Корзина: basket/
Переменная #SECTION_CODE_PATH# разворачивает полный путь вложенных разделов, а #ELEMENT_CODE# подставляет символьный код товара. Использовать #ELEMENT_ID# в детальной странице не нужно — это возврат к цифровым адресам.
Проверьте после включения: файл urlrewrite.php в корне сайта должен получить правило для вашего каталога. Если правила нет, компонент продолжит отдавать старые адреса.
Шаг 3. Символьные коды разделов и элементов
Адрес строится из символьных кодов, а не из названий. Настройка находится в свойствах инфоблока, вкладка «SEO» или «Дополнительно» в зависимости от версии.
- Уникальность. Включите проверку, иначе два товара с одинаковым названием получат одинаковый код.
- Транслитерация при добавлении. Ставится отдельной галочкой для разделов и для элементов — обе нужны.
- Правила транслитерации. Здесь задаются замена пробелов, приведение к нижнему регистру и ограничение длины кода.
- Разделитель. Укажите дефис — почему именно он, разобрано в материале про дефис и подчёркивание.
Встроенная транслитерация Битрикса использует собственную таблицу, которая не совпадает с яндексовской в буквах «щ», «х», «ц» и «й». Для важных посадочных страниц символьный код стоит задавать вручную, подготовив его в генераторе.
Шаг 4. Ограничение длины кода
По умолчанию код формируется из полного названия элемента, а названия в каталогах длинные: «Диван угловой Милано-2 серый рогожка левый угол» превращается в адрес на 60 символов. Ограничьте длину в правилах транслитерации и задавайте код вручную для товаров, которые продвигаются отдельно.
Типичные ошибки
- ЧПУ включили, редиректы не настроили. Старые адреса с параметрами продолжают открываться, и в индексе оказываются обе версии страницы. Нужен 301-редирект со старого формата на новый.
- Пустой символьный код. Элемент без кода выпадает из ЧПУ и открывается по идентификатору. Проверяйте импорт из 1С: он часто не заполняет это поле.
- Дубли из-за регистра. Коды с заглавными буквами создают вторую версию адреса — приведение к нижнему регистру должно быть включено.
- Слэш в конце. Битрикс отдаёт страницу и со слэшем, и без. Выберите один формат и настройте перенаправление на него.
- Фильтры в индексе. Умный фильтр формирует адреса комбинациями; в индекс должны попадать только спросовые сочетания, остальные закрываются.
Как проверить результат
- Откройте три случайных товара из разных разделов — адреса должны быть читаемыми и разными.
- Убедитесь, что старый адрес с параметрами отдаёт 301, а не 200.
- Проверьте, что в карте сайта только новые адреса.
- Прогоните сайт краулером и найдите страницы, доступные по двум адресам одновременно, — о них подробно в статье про дубли из-за URL.
Символьные коды при импорте из 1С
Обмен с 1С — главный источник товаров без символьного кода. Выгрузка передаёт наименование и артикул, а поле кода остаётся пустым, и товар выпадает из ЧПУ, открываясь по числовому идентификатору.
Что помогает:
- включить транслитерацию при добавлении элементов в настройках инфоблока — тогда код формируется автоматически при каждом обмене;
- задать правила транслитерации с ограничением длины: наименования из 1С длинные и содержат характеристики;
- после первого обмена проверить выборку элементов с пустым кодом и заполнить их;
- для товаров, которые продвигаются отдельно, задавать код вручную — автоматика не отличает важный товар от рядового.
Отдельно проверьте уникальность: два товара с одинаковым наименованием получат одинаковый код, и второй перезапишет адрес первого либо получит числовой хвост.
Умный фильтр и SEO-страницы
Умный фильтр формирует адреса вида /catalog/divany/filter/color-gray/apply/. Пускать все комбинации в индекс нельзя: их количество растёт как произведение всех значений всех свойств.
Рабочая схема:
- Соберите список частотных запросов, которые описывают комбинации свойств.
- Для каждого создайте отдельную SEO-страницу фильтра с собственным адресом, заголовком, описанием и текстом.
- Остальные комбинации закройте от индексации и поставьте им канонический адрес на чистый раздел.
- Проверьте, что ссылки на закрытые комбинации не попадают в карту сайта.
Подробный разбор границы между спросовыми и техническими фильтрами — в материале о структуре URL интернет-магазина.
Слэш в конце и настройка в Битриксе
Битрикс традиционно отдаёт страницы и со слэшем, и без него. Оба варианта возвращают код 200, то есть каждая страница каталога существует в двух экземплярах.
Решение — выбрать один формат и настроить перенаправление на уровне сервера. Для Apache правило выглядит так:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /$1/ [R=301,L]
После включения проверьте, что внутренние ссылки в шаблоне тоже используют выбранный формат — иначе каждый переход по меню будет проходить через редирект.
Частые вопросы
Где в Битриксе включается транслитерация?
В настройках инфоблока: отдельные галочки для транслитерации при добавлении разделов и элементов, а рядом — правила замены символов, длины и разделителя.
Почему после включения ЧПУ страницы отдают 404?
Чаще всего не обновился файл urlrewrite.php или каталог ЧПУ в настройках компонента не совпадает с реальным путём страницы. Проверьте оба места.
Можно ли поменять символьный код у товара, который уже в индексе?
Можно, но адрес изменится. Понадобится 301-редирект со старого адреса и обновление внутренних ссылок на этот товар.
Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.