-15%Скидка 15% на разработку сайта или магазина при старте до конца месяца

ЧПУ в 1С-Битрикс: человекопонятные URL для каталога и фильтра

ЧПУ в 1С-Битрикс: человекопонятные URL для каталога, разделов, товаров и умного фильтра

Адрес страницы кажется технической мелочью до тех пор, пока каталог не вырастает до десятков тысяч товаров. Тогда выясняется, что /catalog/index.php?SECTION_ID=45&ELEMENT_ID=1023 и /catalog/smartfony/apple/iphone-15/ — это два разных мира. Первый ни о чём не говорит ни человеку, ни поисковику, легко порождает дубли и рвётся при каждом изменении структуры. Второй читается, отражает вложенность каталога, стабилен и собирает трафик. Превращение первого во второй — это и есть ЧПУ в Битрикс, человекопонятные URL.

Эта статья — подробное практическое руководство по настройке ЧПУ для интернет-магазина на 1С-Битрикс: что такое символьный код, как работает транслитерация, что делает модуль «Человекопонятные ЧПУ» и правила обработки URL, как включить ЧПУ для умного фильтра и, главное, как сделать так, чтобы адреса не «поехали» при обмене с 1С. Материал вырос из нашей практики проектирования SEO-структуры каталогов — по делу, без магии продвижения.

Коротко

  • ЧПУ — читаемый адрес из символьных кодов разделов и товаров вместо ?ID=...; он лучше для людей, поисковиков и защиты от дублей.
  • Символьный код (поле CODE) подставляется в URL; его автогенерацию с транслитерацией включают в настройках инфоблока.
  • За превращение путей в компоненты отвечает модуль «Человекопонятные ЧПУ» и правила обработки URL в urlrewrite.php; фильтр включают в SEF-режиме.
  • Ключ к стабильности — неизменный символьный код при обмене с 1С и редиректы 301 при любой смене адресов.

Что такое ЧПУ и зачем он магазину

ЧПУ расшифровывается как «человекопонятный URL» — адрес страницы, который читается человеком и отражает её смысл. Сравните два адреса одной и той же карточки товара: /bitrix/tools/catalog.php?ID=1023&SECTION=45 и /catalog/smartfony/apple/iphone-15/. Первый — технический: он показывает, каким скриптом и с какими параметрами обрабатывается запрос. Второй — человекопонятный: по нему сразу ясно, что это смартфон Apple iPhone 15 в разделе смартфонов.

Технически любой сайт на 1С-Битрикс может работать и без ЧПУ — на «сырых» параметрах. Компоненты умеют формировать ссылки в двух режимах: обычном (через GET-параметры) и SEF (Search Engine Friendly, то есть с человекопонятными путями). ЧПУ — это включённый SEF-режим плюс механизм, который принимает красивый путь и внутри превращает его обратно в понятные системе параметры. Пользователь и поисковик видят чистый адрес, а движок под капотом всё так же знает, какой раздел и какой элемент нужно показать.

Зачем это магазину? Причин несколько, и они складываются вместе:

ЧПУ и SEO: как адрес влияет на трафик

Вокруг влияния URL на позиции много мифов. Развеем крайности: ЧПУ сам по себе не поднимет сайт в топ, но и его отсутствие способно ощутимо мешать. Адрес — это один из множества сигналов, и работает он не столько «магией ключевых слов в URL», сколько косвенно — через понятность структуры, поведение пользователей и чистоту индекса.

Вот как человекопонятный адрес реально помогает продвижению:

АспектЧто даёт ЧПУМеханизм влияния
Структура сайтаОтражает вложенность разделовПоисковик легче строит карту связей и приоритетов
Кликабельность в выдачеЧитаемая ссылка в сниппетеВыше CTR — поведенческий сигнал
Ключевые словаТема страницы видна в адресеНебольшой прямой сигнал релевантности
ДублиМеньше параметрических копийВес не «размазывается» между адресами
Ссылочная массаСсылки на стабильный адресВес не теряется при смене ID

Важно понимать: главный SEO-эффект ЧПУ — не в самих словах в адресе, а в том, что чистая структура URL позволяет навести порядок с дублями и каноническими адресами. На большом каталоге именно борьба с дублями и грамотный краулинговый бюджет дают ощутимый результат — про это отдельная статья про robots.txt и sitemap.xml для большого магазина. ЧПУ и управление обходом — две стороны одной задачи.

Анатомия ЧПУ-адреса

Чтобы осознанно настраивать ЧПУ, полезно разложить адрес на составные части. Человекопонятный URL каталога обычно строится из нескольких сегментов, каждый из которых что-то означает.

Возьмём адрес https://shop.ru/catalog/mebel/divany/uglovoy-divan-milan/ и разберём его по частям:

Такая иерархия не случайна: она повторяет дерево разделов инфоблока. В настройках каталога вы задаёте шаблон адреса через переменные вида #SECTION_CODE_PATH# и #ELEMENT_CODE#, а движок подставляет в них символьные коды конкретных разделов и товара. Именно поэтому структура каталога и структура URL всегда идут рука об руку — меняя дерево разделов, вы меняете и адреса.

Анатомия ЧПУ-адреса shop.ru /catalog/ /mebel/ /divany/ /uglovoy-divan-milan/ домен папка каталога раздел подраздел символьный код товара Каждый сегмент = символьный код из дерева инфоблока, а не числовой ID
Схема: адрес читается слева направо как путь по дереву каталога — домен, папка компонента, раздел, подраздел и символьный код товара.

Плохой URL с id против человекопонятного

Чтобы разница была нагляднее, поставим два адреса рядом и разберём, чем именно плох «параметрический» вариант и хорош ЧПУ. Речь об одной и той же карточке товара — меняется только форма адреса.

Критерий?ELEMENT_ID=1023ЧПУ /apple/iphone-15/
ЧитаемостьНи о чём не говоритВидно раздел и товар
Ключевые словаНетЕсть в пути
СтабильностьЗависит от ID в базеДержится на символьном коде
Риск дублейВысокий (порядок параметров)Низкий
Вид в выдачеДлинная строкаАккуратная «хлебная» цепочка
Копирование ссылкиЛегко потерять параметрЦелостный путь

Отдельно про дубли из параметров. У адреса ?SECTION_ID=45&ELEMENT_ID=1023 легко появляются близнецы: ?ELEMENT_ID=1023&SECTION_ID=45 (переставили параметры), ?ELEMENT_ID=1023&utm_source=ya (пометки кампаний), ?ELEMENT_ID=1023&print=Y (версия для печати). Для поисковика это потенциально разные URL с одинаковым содержимым. У ЧПУ такой проблемы нет: путь один, а всё лишнее либо отсекается, либо канонизируется.

Плохо: параметры Хорошо: ЧПУ ?SECTION_ID=45&ELEMENT_ID=1023 ?ELEMENT_ID=1023&SECTION_ID=45 ?ELEMENT_ID=1023&print=Y ?ELEMENT_ID=1023&utm_source=ya 4 адреса = один товар = дубли /apple/iphone-15/ 1 адрес = один товар = без дублей
Схема: параметрический адрес легко порождает несколько «близнецов» одного товара, а ЧПУ сводит их к единственному чистому пути.

Символьный код разделов и элементов

Сердце ЧПУ в 1С-Битрикс — это символьный код (в интерфейсе и коде — поле CODE). Он есть и у разделов инфоблока, и у элементов (товаров). Именно символьный код подставляется в человекопонятный адрес вместо числового идентификатора.

Различают две «личности» у каждой записи каталога:

К символьному коду предъявляются требования, от соблюдения которых зависит работоспособность ЧПУ:

ТребованиеПочему важно
Уникальность в пределах уровняДва раздела с кодом divany внутри одного родителя дадут коллизию адресов
Только безопасные символыЛатиница, цифры, дефис, подчёркивание — без пробелов, кириллицы и спецсимволов
Заполненность у всех элементовПустой код → в адрес подставится ID или страница не соберётся по ЧПУ
Стабильность во времениМеняется код → меняется URL → нужен редирект 301

Отдельно про уникальность. В Битриксе символьный код раздела должен быть уникален в пределах родителя, а у элемента — в пределах инфоблока (в зависимости от настройки). Если движок при генерации встречает уже занятый код, он по умолчанию добавляет суффикс уникальности (divany1, divany2). Такие «хвосты» — сигнал, что где-то пересеклись названия, и адрес получился неаккуратным. Их стоит отлавливать и чистить, особенно на этапе первичной загрузки каталога.

Важно: символьный код — это не то же самое, что XML_ID (внешний код). XML_ID связывает товар с записью в 1С и служит для сопоставления при обмене, а CODE отвечает за адрес. Их часто путают, но роли у них разные: один про интеграцию, другой про URL.

Транслитерация: автогенерация символьного кода

Заполнять символьный код вручную для тысяч товаров нереально. Поэтому в 1С-Битрикс есть встроенная транслитерация — автоматическое превращение русского названия в латинский код. «Угловой диван Милан» становится uglovoy-divan-milan, «Смартфоны» — smartfony. Настраивается это в параметрах инфоблока, в блоке автогенерации символьного кода.

Основные настройки транслитерации, которые вы задаёте один раз на инфоблок:

Настройки задаются отдельно для разделов и для элементов инфоблока — и это правильно, потому что у разделов коды короче и «категорийные» (divany), а у товаров — длиннее и подробнее (uglovoy-divan-milan-serый… точнее uglovoy-divan-milan-seryy). Разумная длина кода товара — до 5–7 слов; всё, что длиннее, лучше обрезать.

Совет: включайте транслитерацию до первой массовой загрузки каталога. Если залить товары без неё, у тысяч элементов не будет символьного кода, и потом придётся генерировать его пакетно и следить, чтобы уже проиндексированные адреса не изменились задним числом.

Кириллица или транслит в URL

Один из вечных вопросов: делать адреса латиницей (/catalog/divany/) или на кириллице (/каталог/диваны/)? Формально поисковые системы понимают кириллические URL и даже способны подсвечивать их в выдаче. Но на практике для магазина на 1С-Битрикс почти всегда выбирают транслит, и вот почему.

КритерийТранслит (латиница)Кириллица
Вид при копированииЧистый: /catalog/divany/Percent-encoding: /%D0%B4%D0%B8...
Длина ссылкиКороткаяРаздувается в 2–3 раза при кодировании
Совместимость системПолная (аналитика, CRM, выгрузки)Возможны сбои и «кракозябры»
Восприятие в выдачеАккуратный путьЧитаемо, но зависит от отрисовки
Риск ошибок в кодеМинимальныйВыше (кодировки, регистр)

Главная боль кириллических адресов — percent-encoding. Красивый /диваны/ в реальной ссылке, в письме, в рекламном кабинете и в отчёте аналитики превращается в нечитаемую строку вида /%D0%B4%D0%B8%D0%B2%D0%B0%D0%BD%D1%8B/. Это неудобно, ломает ожидания и повышает риск ошибок при ручной работе со ссылками. Поэтому каталог почти всегда делают на транслите, а кириллицу если и оставляют — то для отдельных информационных страниц, где адрес меняется редко.

Настройки инфоблока: URL раздела и элемента

Форму адресов каталога задаёт не только символьный код, но и шаблоны URL в настройках инфоблока. На вкладке «Поля» / «SEO» инфоблока (или в параметрах комплексного компонента) есть поля с шаблонами адреса раздела, элемента и самого каталога. В них используются переменные-подстановки.

Ключевые переменные шаблонов адреса:

ПеременнаяЧто подставляет
#SITE_DIR#Каталог сайта (обычно /)
#SECTION_CODE#Символьный код одного раздела
#SECTION_CODE_PATH#Полный путь символьных кодов всех вложенных разделов
#ELEMENT_CODE#Символьный код элемента (товара)
#ELEMENT_ID# / #SECTION_ID#Числовые идентификаторы (запасной вариант)

Типовые шаблоны для каталога магазина выглядят так (пути условные, зависят от папки каталога):

Каталог:  #SITE_DIR#catalog/
Раздел:   #SITE_DIR#catalog/#SECTION_CODE_PATH#/
Элемент:  #SITE_DIR#catalog/#SECTION_CODE_PATH#/#ELEMENT_CODE#/

Разница между #SECTION_CODE# и #SECTION_CODE_PATH# принципиальна. Первый подставляет код только текущего раздела, второй — всю цепочку вложенности. Для магазина с многоуровневым деревом почти всегда нужен именно #SECTION_CODE_PATH#, чтобы адрес отражал полный путь: /catalog/mebel/divany/uglovye/, а не «плоский» /catalog/uglovye/. Плоские адреса ломаются, как только два разных раздела получают одинаковый код на разных ветках дерева.

Внимание: шаблоны URL в настройках инфоблока и правила в комплексном компоненте каталога должны быть согласованы. Если компонент формирует ссылки по одному шаблону, а правило обработки URL ждёт другой — вы получите либо 404, либо ссылки, ведущие «мимо». Всегда проверяйте связку целиком: как ссылка генерируется и как она разбирается обратно.

Модуль «Человекопонятные ЧПУ» и urlrewrite.php

Красивый путь в адресной строке — это только половина дела. Нужно, чтобы сервер, получив /catalog/mebel/divany/, понял: «это запрос к комплексному компоненту каталога, раздел mebel/divany». За это отвечает модуль «Человекопонятные ЧПУ» (модуль urlrewrite) и файл urlrewrite.php в корне сайта.

urlrewrite.php — это массив правил обработки URL. Каждое правило состоит из трёх основных частей:

Схематично одно правило выглядит так:

array(
  "CONDITION" => "#^/catalog/#",
  "RULE"      => "",
  "ID"        => "bitrix:catalog",
  "PATH"      => "/catalog/index.php",
),

Здесь любое обращение внутрь /catalog/ отдаётся файлу /catalog/index.php, а уже комплексный компонент bitrix:catalog внутри разбирает остаток пути (раздел, товар, фильтр) по своим внутренним правилам SEF. Именно поэтому для типового каталога не нужно писать десятки правил вручную — комплексный компонент берёт разбор путей на себя, а в urlrewrite.php достаточно одного правила на папку каталога.

Правила в urlrewrite.php обрабатываются сверху вниз, и срабатывает первое подходящее. Отсюда важное следствие: порядок правил имеет значение. Более частные правила (конкретные разделы, спецстраницы) должны стоять выше общих, иначе общее правило перехватит запрос раньше, и частное никогда не сработает.

Важно: urlrewrite.php обновляется автоматически, когда вы включаете ЧПУ в компоненте и сохраняете страницу. Ручная правка возможна, но при следующем пересохранении компонента изменения могут переписаться. Если правите файл руками, документируйте это и не смешивайте ручные и автоматические правки бессистемно.

Как запрос проходит через правила обработки URL

Разберём путь запроса от адресной строки до готовой страницы — это помогает понимать, где искать проблему, когда ЧПУ «не ловится». Цепочка такая:

  1. Браузер отправляет запрос на /catalog/mebel/divany/.
  2. Веб-сервер (через .htaccess / mod_rewrite) видит, что такого физического файла нет, и передаёт управление главному скрипту Битрикса.
  3. Модуль «Человекопонятные ЧПУ» перебирает правила из urlrewrite.php и находит подходящее по CONDITION.
  4. Правило определяет физический файл (/catalog/index.php) и передаёт ему остаток пути.
  5. Комплексный компонент каталога разбирает путь: понимает, что mebel/divany — это раздел, и вызывает нужный дочерний компонент (список раздела, карточку товара или фильтр).
  6. Компонент формирует страницу, а все ссылки на ней он тоже генерирует в ЧПУ-виде — цикл замкнут.

Ключевая идея: ЧПУ работает в обе стороны. На входе красивый путь превращается в параметры компонента, на выходе компонент генерирует красивые пути в ссылках. Если сломать одну из сторон, получаем классические симптомы: либо страницы открываются, но ссылки в меню ведут на «сырые» параметры, либо ссылки красивые, но по ним 404. Диагностика всегда начинается с вопроса «на какой стороне рвётся».

Браузер /catalog/divany/ Веб-сервер .htaccess / rewrite Модуль ЧПУ urlrewrite.php Правило: CONDITION #^/catalog/# → index.php bitrix:catalog разбирает путь раздела Готовая страница + ссылки уже в ЧПУ
Схема: запрос идёт от браузера через веб-сервер к модулю ЧПУ, правило из urlrewrite.php направляет его в комплексный компонент, который разбирает путь и отдаёт страницу с ЧПУ-ссылками.

ЧПУ для умного фильтра: SEF-режим каталога

Отдельная и самая коварная тема — ЧПУ для умного фильтра. По умолчанию выбор значений фильтра формирует адрес с длинной строкой GET-параметров вида /catalog/divany/?set_filter=y&arrFilter_43_1234=Y&arrFilter_P1=.... Такой адрес нечитаем, плодит дубли и плохо индексируется. Решение — включить SEF-режим (человекопонятные адреса) для фильтра.

В параметрах комплексного компонента каталога и компонента catalog.smart.filter есть настройки ЧПУ фильтра:

После включения выбор «Apple + серый» превращается в чистый путь. Сравните:

Было:  /catalog/smartfony/?set_filter=y&arrFilter_pf[brand]=apple&arrFilter_pf[color]=seryy
Стало: /catalog/smartfony/filter/apple-seryy/

Значения в пути (apple-seryy) берутся из символьных кодов значений свойств, поэтому и здесь важна аккуратная транслитерация значений списков. Такой адрес уже можно превратить в полноценную SEO-посадочную страницу фасетной навигации с уникальными метатегами. О том, как автоматически раздавать этим страницам title, description и H1, — отдельная статья про SEO-шаблоны метатегов для умного фильтра.

Важно: включённый SEF-режим фильтра не означает «индексировать все комбинации». Открывайте под индексацию только осмысленные пути под реальный спрос, а бесконечные комбинации редких значений закрывайте от обхода и канонизируйте. Иначе ЧПУ-фильтр из источника трафика превратится в генератор тысяч дублей. Механику самого фильтра мы разбираем в статье про умный фильтр в 1С-Битрикс.

Стабильность символьного кода при обмене с 1С

Самая дорогая ошибка с ЧПУ проявляется не сразу, а через несколько обменов с 1С: адреса товаров начинают меняться сами собой. Сегодня товар живёт по /catalog/divany/uglovoy-divan-milan/, а после ночного обмена — по /catalog/divany/uglovoy-divan-milan1/. Проиндексированные страницы отдают 404, позиции сыпятся, а причину ищут неделями.

Корень проблемы — в том, что при обмене товар может пересоздаваться, и если символьный код не зафиксирован, движок генерирует его заново. Возможные сценарии:

Правильная стратегия — сделать символьный код стабильным и независимым от обмена. Рабочие подходы:

ПодходСутьКогда применять
Передавать CODE из 1СКод формируется в учётной системе и приходит в обменеЕсть контроль над правилами обмена
Привязать к XML_IDКод строится один раз от неизменного внешнего кодаНазвание товара может меняться
Генерировать только при добавленииСуществующий код не перезаписывается при обменеКаталог уже проиндексирован
Запретить суффиксы-хвостыКонтроль уникальности на этапе загрузкиМного похожих названий

Главный принцип: URL товара не должен зависеть от того, сколько раз прошёл обмен. Один раз присвоенный адрес живёт с товаром до тех пор, пока вы сознательно не решите его сменить (и тогда поставите редирект). Про саму механику обмена и настройку правил выгрузки у нас есть материалы в рубрике SEO и продвижение и смежных разделах блога.

Обмен с 1С и символьный код Нестабильно до обмена: /divany/divan-milan/ после: /divany/divan-milan1/ ✗ 404 код перегенерился → адрес поехал Стабильно XML_ID = 1С-000123 (неизменно) /divany/divan-milan/ ✓ всегда код привязан к XML_ID → адрес постоянен Правило: адрес не зависит от числа обменов
Схема: если код генерируется заново при каждом обмене, адрес «едет» и отдаёт 404; привязка кода к неизменному XML_ID удерживает URL постоянным.

Вложенность и глубина URL

ЧПУ отражает дерево каталога, и здесь возникает вопрос: насколько глубоко его делать? Адрес /catalog/mebel/gostinaya/divany/uglovye/uglovoy-divan-milan/ честно повторяет пятиуровневую структуру, но становится длинным и громоздким. Слишком плоский /catalog/uglovoy-divan-milan/ теряет контекст. Истина посередине.

Практические ориентиры по глубине:

Есть и SEO-нюанс: чем глубже страница в структуре, тем «дальше» она от главной по кликам, и тем меньше внутреннего веса до неё доходит. Это не повод делать всё плоским, но повод не плодить лишние уровни. Товары, важные для продаж, не стоит закапывать на пятый-шестой уровень без необходимости. Баланс между логичной вложенностью и разумной глубиной — часть проектирования SEO-структуры сайта.

Дубли со слэшем и без, нормализация

Одна из самых частых технических проблем ЧПУ — дубли, различающиеся только завершающим слэшем: /catalog/divany и /catalog/divany/. Для человека это одна и та же страница, для поисковика — потенциально две разные с одинаковым содержимым. То же касается регистра (/Divany/ против /divany/) и повторяющихся слэшей (//divany/).

1С-Битрикс по своей логике «страниц-папок» тяготеет к адресам со слэшем на конце, поэтому канонической обычно выбирают версию со слэшем. Чтобы убрать дубли, нужен набор мер:

Важно выбрать одну форму и держать её везде: во внутренних ссылках, в sitemap.xml, в canonical и в редиректах. Если внутренние ссылки ведут на форму со слэшем, а sitemap отдаёт без слэша — вы сами создаёте противоречивые сигналы. Единообразие важнее того, какую именно форму вы выбрали.

Канонические адреса и ЧПУ

ЧПУ убирает большую часть параметрических дублей, но не все. Остаются сортировки, пагинация, UTM-метки, фильтры-«близнецы». Здесь в дело вступает канонический адрес — тег <link rel="canonical">, который говорит поисковику: «главная версия этой страницы вот тут».

Как ЧПУ и canonical делят зоны ответственности:

СитуацияИнструментКаноническая цель
Раздел с сортировкойcanonicalРаздел без параметра сортировки
Страница 2, 3, 4 пагинацииcanonical / self-canonicalСвоя страница или первая — по стратегии
Комбинация фильтра (мусорная)canonical + noindexБазовый раздел или главная SEO-комбинация
Товар в нескольких разделахcanonicalОдин основной раздел товара
Слэш / регистр / UTM301-редиректЕдиный чистый ЧПУ

Частый вопрос — товар, доступный из нескольких разделов. Если один и тот же диван лежит и в «Угловые диваны», и в «Распродажа», у него могут быть два ЧПУ-адреса. Каноническим назначают один — основной раздел, — а остальные ссылаются на него через canonical. Так вес не делится, а поисковик понимает, какой адрес показывать в выдаче.

ЧПУ и пагинация

Списки товаров разбиваются на страницы, и здесь ЧПУ снова сталкивается с параметрами. По умолчанию вторая страница раздела выглядит как /catalog/divany/?PAGEN_1=2. Это работоспособно, но параметр в адресе — не самый чистый вариант. Многие проекты переводят пагинацию в ЧПУ-вид: /catalog/divany/page-2/.

Что важно учесть при работе с пагинацией и ЧПУ:

Наш собственный блог, кстати, использует именно ЧПУ-пагинацию вида /articles/page-2/ с чистой первой страницей и корректными rel="prev"/"next" — это дружелюбный к поисковику и к человеку формат. Для каталога подход тот же: пагинация должна быть предсказуемой и не плодить параметрические дубли.

Редиректы 301 при смене URL

Рано или поздно адрес приходится менять: переименовали раздел, перестроили дерево каталога, перешли с параметров на ЧПУ, поправили символьный код. Любая смена URL проиндексированной страницы без редиректа — это потеря: поисковик видит 404 там, где была страница, теряет её позиции и накопленный вес.

Спасение — редирект 301 (постоянное перенаправление). Он говорит поисковику: «страница переехала навсегда, вот новый адрес», и передаёт новому URL вес старого. Правила простые, но их легко нарушить:

  1. Соберите карту старых адресов. Выгрузите проиндексированные URL из вебмастера и логов, особенно старые ?ELEMENT_ID=... и прежние ЧПУ.
  2. Сопоставьте старое → новое. Каждый старый адрес должен вести на конкретный релевантный новый, а не на главную «оптом».
  3. Настройте 301. Массовые правила — через urlrewrite.php или .htaccess, точечные важные — отдельными строками.
  4. Избегайте цепочек. Не допускайте A → B → C; ведите сразу A → C.
  5. Проверьте коды ответа. Убедитесь, что отдаётся именно 301, а не 302 (временный) и не 200 на «мягкой» 404.
  6. Обновите внутренние ссылки. Меню, баннеры, sitemap — всё должно вести уже на новые адреса, а не через редирект.
Правило переезда: редиректы 301 со старых адресов настраивают до выкладки новой структуры, а не после того, как в вебмастере посыпались 404. Заранее подготовленная карта перенаправлений экономит позиции и нервы.

Пошаговая настройка ЧПУ каталога

Сведём теорию в практический порядок действий для типового магазина на 1С-Битрикс. Последовательность важна: если поменять шаги местами, легко наплодить нестабильных кодов или сломать уже работающие адреса.

  1. Включите модуль «Человекопонятные ЧПУ». Убедитесь, что модуль urlrewrite установлен и активен, а веб-сервер настроен на mod_rewrite / обработку через главный скрипт.
  2. Настройте транслитерацию инфоблока. В свойствах инфоблока включите автогенерацию символьного кода с транслитерацией — отдельно для разделов и элементов, с нижним регистром и заменой пробелов на дефис.
  3. Заполните символьные коды. Для уже загруженных разделов и товаров сгенерируйте недостающие коды пакетно, проверьте на коллизии и «хвосты» уникальности.
  4. Задайте шаблоны URL. Пропишите шаблоны адреса каталога, раздела (#SECTION_CODE_PATH#) и элемента (#ELEMENT_CODE#) в настройках инфоблока и компонента.
  5. Включите ЧПУ в комплексном компоненте. В параметрах bitrix:catalog включите режим ЧПУ и задайте папку каталога — правило автоматически пропишется в urlrewrite.php.
  6. Включите SEF-режим фильтра. Настройте ЧПУ умного фильтра (SEF_MODE, SEF_RULE), проверьте, что комбинации формируют чистые пути.
  7. Настройте нормализацию и canonical. Единый слэш, единый регистр, rel="canonical" на канонические формы.
  8. Подготовьте редиректы 301. Со старых адресов (параметров и прежних ЧПУ) на новые.
  9. Проверьте связку целиком. Прокликайте меню, карточки, фильтр и пагинацию: ссылки красивые, страницы открываются, дублей нет.
  10. Обновите sitemap.xml. Чтобы в карте были только новые чистые адреса без параметрического мусора.

.htaccess и mod_rewrite под капотом

Чтобы правила urlrewrite.php вообще получили шанс сработать, веб-сервер должен передавать «несуществующие» пути главному скрипту Битрикса. На Apache это делает .htaccess с модулем mod_rewrite, на nginx — соответствующая директива в конфиге. Логика одна: если запрошенного файла физически нет, отдай запрос в bitrix/urlrewrite.php / index.php.

Упрощённый фрагмент типового .htaccess Битрикса выглядит так:

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

Читается это так: если запрошенный путь — не существующий файл (!-f), не ссылка (!-l) и не каталог (!-d), то передать его в urlrewrite.php. Именно поэтому ЧПУ-адрес /catalog/divany/, которому не соответствует реальная папка, попадает в механизм правил, а не отдаёт 404 на уровне сервера.

Здесь же, на уровне .htaccess, часто решают задачи нормализации: принудительный HTTPS, единый слэш, склейка www и без-www, редиректы 301 целыми группами. Важно не дублировать одни и те же правила на двух уровнях (сервер и Битрикс) так, чтобы они конфликтовали или зацикливались. Если перенаправление уже сделано на сервере — не делайте его же ещё раз в компоненте.

Внимание: на nginx (в том числе в связке nginx + Apache) правила из .htaccess сами по себе не работают — нужен корректный конфиг nginx. Это частая причина «ЧПУ включил, а всё равно 404»: файл .htaccess лежит, но веб-сервер его не читает. Проверяйте, какой именно сервер обрабатывает запросы.

Частые ошибки с ЧПУ

Эти промахи встречаются чаще всего и дорого обходятся в трафике и индексации:

Чек-лист настройки

Сведём всё в практический список для приёмки перед запуском:

  1. Модуль ЧПУ активен. «Человекопонятные ЧПУ» включён, веб-сервер передаёт пути в главный скрипт.
  2. Транслитерация настроена. Автогенерация кода с нижним регистром и дефисами включена для разделов и элементов.
  3. Коды заполнены. У всех разделов и товаров есть символьный код без «хвостов» уникальности.
  4. Шаблоны URL заданы. Раздел на #SECTION_CODE_PATH#, элемент на #ELEMENT_CODE#, всё согласовано с компонентом.
  5. ЧПУ фильтра включён. SEF-режим работает, чистые пути формируются, индексируется только спрос.
  6. Код стабилен при обмене. CODE привязан к XML_ID или передаётся из 1С, перегенерация запрещена.
  7. Дубли устранены. Единый слэш, единый регистр, canonical на канонические формы.
  8. Редиректы 301 готовы. Старые адреса ведут на новые напрямую, без цепочек, с кодом 301.
  9. Sitemap чистый. В карте только новые ЧПУ без параметрического мусора.
  10. Связка проверена. Меню, карточки, фильтр, пагинация — ссылки красивые, страницы открываются, 404 нет.

Вывод

ЧПУ в 1С-Битрикс — это не косметика адресной строки, а инфраструктура, на которой держится SEO-здоровье магазина. Человекопонятный URL строится из символьных кодов разделов и товаров, включается модулем «Человекопонятные ЧПУ» и правилами обработки URL, а для фильтра — SEF-режимом каталога. Сделать красивый адрес несложно; по-настоящему важно сделать его стабильным — чтобы он не менялся при обмене с 1С, не двоился из-за слэша и не терялся при переездах.

Соберите связку целиком: транслитерация и заполненные коды, согласованные шаблоны URL, стабильный символьный код на XML_ID, канонические адреса, ЧПУ-фильтр только под спрос и заранее подготовленные редиректы 301. Настроенная один раз эта дисциплина работает годами: каталог растёт, товары приходят и уходят через обмен, а адреса остаются чистыми, читаемыми и постоянными — ровно такими, какими их любят и люди, и поисковики.

Частые вопросы

Что такое ЧПУ простыми словами?

ЧПУ — это человекопонятный URL, то есть адрес страницы, который читается человеком и отражает её содержание: /catalog/smartfony/apple/ вместо /catalog/index.php?SECTION_ID=45&ELEMENT_ID=1023. В таком адресе видно раздел, подраздел и товар, он короче, надёжнее запоминается и лучше воспринимается и людьми, и поисковыми системами. В 1С-Битрикс ЧПУ строится из символьных кодов разделов и элементов инфоблока и включается через модуль «Человекопонятные ЧПУ» и правила обработки URL.

Чем символьный код отличается от ID элемента?

ID — это числовой идентификатор записи в базе, он присваивается автоматически и в адресе выглядит как ?ELEMENT_ID=1023. Символьный код (поле CODE) — это текстовая метка, которую задаёте вы или генерирует транслитерация: apple, uglovoy-divan, smartfony. Именно символьный код подставляется в ЧПУ вместо числа. ID уникален всегда, а уникальность и стабильность символьного кода нужно настроить — иначе при обмене с 1С или ручной правке адрес может «поехать».

Нужно ли включать транслитерацию символьного кода в настройках инфоблока?

Да, для каталога это практически обязательно. В настройках инфоблока есть блок автогенерации символьного кода с включаемой транслитерацией: при создании раздела или товара Битрикс сам превращает название в латинский код (uglovoy-divan из «Угловой диван»). Без транслитерации у элементов не будет кода, и ЧПУ либо не сформируется, либо в адрес попадёт числовой ID. Правила транслитерации (нижний регистр, замена пробелов, ограничение длины) там же настраиваются.

Как включить ЧПУ для умного фильтра?

Для фильтра каталога в 1С-Битрикс есть отдельный SEF-режим (человекопонятные адреса) в параметрах комплексного компонента каталога и компонента умного фильтра. Включается опция ЧПУ, задаётся папка каталога и шаблон правила (SEF_RULE), например /catalog/#SECTION_ID#/filter/#SMART_FILTER_PATH#/. После этого выбранная комбинация значений превращается в чистый путь вида /catalog/smartfony/filter/apple-seryy/ вместо длинной строки GET-параметров. Индексируемыми делают только осмысленные комбинации под спрос.

Почему при обмене с 1С меняются URL товаров и как это остановить?

Если в правилах обмена символьный код не передаётся из 1С и настроена автогенерация «при добавлении», то при пересоздании товара код может сгенерироваться заново или с суффиксом уникальности, и адрес изменится. Чтобы код был стабильным, его либо передают из 1С как отдельное поле, либо привязывают к неизменному внешнему коду (XML_ID), либо запрещают перегенерацию существующего кода. Тогда адрес товара не зависит от того, сколько раз прошёл обмен.

Что делать со старыми адресами после перехода на ЧПУ?

Настроить постраничные редиректы 301 со старых URL (в том числе со старых ?ELEMENT_ID=... и с прежних ЧПУ) на новые. Редирект 301 передаёт накопленный вес страницы новому адресу и убирает дубли из индекса. Массово это делают правилами в urlrewrite.php или .htaccess, а точечные важные страницы — отдельными строками. Без 301 после смены структуры вы теряете позиции и получаете «404» на местах проиндексированных страниц.

Кириллица или транслит — что лучше в URL?

На практике для магазина на 1С-Битрикс безопаснее латинская транслитерация: /catalog/divany/ вместо /каталог/диваны/. Кириллические адреса поисковики понимают, но в реальной жизни они превращаются в громоздкий percent-encoding (%D0%B4%D0%B8...) при копировании, ссылках и в аналитике, что неудобно и повышает риск ошибок. Транслит короче, стабильнее и совместим со всеми системами. Кириллицу иногда оставляют для инфостраниц, но каталог почти всегда делают на транслите.

Как убрать дубли со слэшем на конце и без него?

Нужно выбрать один канонический вариант (для Битрикса это обычно адрес со слэшем на конце — /catalog/divany/) и настроить 301-редирект второго варианта на него, а также прописать rel="canonical" на правильную версию. Иначе /catalog/divany и /catalog/divany/ поисковик может счесть двумя разными страницами с одинаковым содержимым. Единообразие завершающего слэша — базовая гигиена ЧПУ, которую задают на уровне сервера и настроек сайта.

Поделиться:

Нужно навести порядок в URL большого каталога?

Настроим ЧПУ для разделов, товаров и умного фильтра, сделаем символьные коды стабильными при обмене с 1С, уберём дубли и подготовим редиректы 301. Рассчитаем работу по вашему сайту.

Услуга «SEO-структура»

Редакция B2Bsite

Редакция студии B2Bsite. С 2014 года команда настраивает техническое SEO интернет-магазинов на 1С-Битрикс: ЧПУ и символьные коды, правила обработки URL, индексацию каталога и умного фильтра, редиректы и шаблоны метатегов для среднего и крупного бизнеса.

← Все статьи блога