Адрес страницы кажется технической мелочью до тех пор, пока каталог не вырастает до десятков тысяч товаров. Тогда выясняется, что /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-режим плюс механизм, который принимает красивый путь и внутри превращает его обратно в понятные системе параметры. Пользователь и поисковик видят чистый адрес, а движок под капотом всё так же знает, какой раздел и какой элемент нужно показать.
Зачем это магазину? Причин несколько, и они складываются вместе:
- Понятность. Человек по адресу понимает, где находится, и предсказывает структуру: если есть
/catalog/smartfony/apple/, то, вероятно, есть и/catalog/smartfony/samsung/. - Доверие и кликабельность. В выдаче и в мессенджерах читаемая ссылка выглядит надёжнее длинной строки с параметрами и чаще получает клик.
- SEO-сигнал. Ключевые слова в адресе, отражение вложенности, отсутствие мусорных параметров помогают поисковику понять содержание и связи страниц.
- Контроль дублей. Чистый путь проще канонизировать и защитить от бесконечных вариаций, которые плодят GET-параметры.
- Стабильность ссылок. Адрес на основе символьного кода не зависит от того, какой числовой ID выдала база при импорте.
ЧПУ и SEO: как адрес влияет на трафик
Вокруг влияния URL на позиции много мифов. Развеем крайности: ЧПУ сам по себе не поднимет сайт в топ, но и его отсутствие способно ощутимо мешать. Адрес — это один из множества сигналов, и работает он не столько «магией ключевых слов в URL», сколько косвенно — через понятность структуры, поведение пользователей и чистоту индекса.
Вот как человекопонятный адрес реально помогает продвижению:
| Аспект | Что даёт ЧПУ | Механизм влияния |
|---|---|---|
| Структура сайта | Отражает вложенность разделов | Поисковик легче строит карту связей и приоритетов |
| Кликабельность в выдаче | Читаемая ссылка в сниппете | Выше CTR — поведенческий сигнал |
| Ключевые слова | Тема страницы видна в адресе | Небольшой прямой сигнал релевантности |
| Дубли | Меньше параметрических копий | Вес не «размазывается» между адресами |
| Ссылочная масса | Ссылки на стабильный адрес | Вес не теряется при смене ID |
Важно понимать: главный SEO-эффект ЧПУ — не в самих словах в адресе, а в том, что чистая структура URL позволяет навести порядок с дублями и каноническими адресами. На большом каталоге именно борьба с дублями и грамотный краулинговый бюджет дают ощутимый результат — про это отдельная статья про robots.txt и sitemap.xml для большого магазина. ЧПУ и управление обходом — две стороны одной задачи.
Анатомия ЧПУ-адреса
Чтобы осознанно настраивать ЧПУ, полезно разложить адрес на составные части. Человекопонятный URL каталога обычно строится из нескольких сегментов, каждый из которых что-то означает.
Возьмём адрес https://shop.ru/catalog/mebel/divany/uglovoy-divan-milan/ и разберём его по частям:
- Схема и домен (
https://shop.ru) — протокол и хост сайта. - Папка каталога (
/catalog/) — точка входа комплексного компонента, где живут правила ЧПУ. - Раздел (
/mebel/) — символьный код раздела верхнего уровня. - Подраздел (
/divany/) — символьный код вложенного раздела. - Элемент (
/uglovoy-divan-milan/) — символьный код карточки товара. - Завершающий слэш — единый признак «страницы-папки», важный для устранения дублей.
Такая иерархия не случайна: она повторяет дерево разделов инфоблока. В настройках каталога вы задаёте шаблон адреса через переменные вида #SECTION_CODE_PATH# и #ELEMENT_CODE#, а движок подставляет в них символьные коды конкретных разделов и товара. Именно поэтому структура каталога и структура URL всегда идут рука об руку — меняя дерево разделов, вы меняете и адреса.
Плохой 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 с одинаковым содержимым. У ЧПУ такой проблемы нет: путь один, а всё лишнее либо отсекается, либо канонизируется.
Символьный код разделов и элементов
Сердце ЧПУ в 1С-Битрикс — это символьный код (в интерфейсе и коде — поле CODE). Он есть и у разделов инфоблока, и у элементов (товаров). Именно символьный код подставляется в человекопонятный адрес вместо числового идентификатора.
Различают две «личности» у каждой записи каталога:
- ID — числовой первичный ключ в базе. Присваивается автоматически, уникален, но ничего не значит для человека и не гарантирует постоянства при пересоздании записи через импорт.
- Символьный код (CODE) — текстовая метка латиницей:
divany,uglovoy-divan-milan,apple. Именно он попадает в ЧПУ. Его можно задать вручную или сгенерировать транслитерацией из названия.
К символьному коду предъявляются требования, от соблюдения которых зависит работоспособность ЧПУ:
| Требование | Почему важно |
|---|---|
| Уникальность в пределах уровня | Два раздела с кодом divany внутри одного родителя дадут коллизию адресов |
| Только безопасные символы | Латиница, цифры, дефис, подчёркивание — без пробелов, кириллицы и спецсимволов |
| Заполненность у всех элементов | Пустой код → в адрес подставится ID или страница не соберётся по ЧПУ |
| Стабильность во времени | Меняется код → меняется URL → нужен редирект 301 |
Отдельно про уникальность. В Битриксе символьный код раздела должен быть уникален в пределах родителя, а у элемента — в пределах инфоблока (в зависимости от настройки). Если движок при генерации встречает уже занятый код, он по умолчанию добавляет суффикс уникальности (divany1, divany2). Такие «хвосты» — сигнал, что где-то пересеклись названия, и адрес получился неаккуратным. Их стоит отлавливать и чистить, особенно на этапе первичной загрузки каталога.
XML_ID (внешний код). XML_ID связывает товар с записью в 1С и служит для сопоставления при обмене, а CODE отвечает за адрес. Их часто путают, но роли у них разные: один про интеграцию, другой про URL.
Транслитерация: автогенерация символьного кода
Заполнять символьный код вручную для тысяч товаров нереально. Поэтому в 1С-Битрикс есть встроенная транслитерация — автоматическое превращение русского названия в латинский код. «Угловой диван Милан» становится uglovoy-divan-milan, «Смартфоны» — smartfony. Настраивается это в параметрах инфоблока, в блоке автогенерации символьного кода.
Основные настройки транслитерации, которые вы задаёте один раз на инфоблок:
- Транслитерация при добавлении. Генерировать код автоматически, если он не заполнен вручную. Для каталога — практически обязательный флаг.
- Правила транслитерации. Набор правил перевода кириллицы в латиницу (как именно превращать «щ», «ю», «ё»).
- Все в нижний регистр. Приводить код к нижнему регистру — чтобы не плодить
Divanyиdivanyкак разные. - Замена пробелов. Обычно на дефис — так адрес читается лучше всего.
- Ограничение длины. Обрезать слишком длинные коды, чтобы адреса не разрастались до сотен символов.
- Список недопустимых символов. Что выкидывать или заменять (точки, кавычки, слэши).
Настройки задаются отдельно для разделов и для элементов инфоблока — и это правильно, потому что у разделов коды короче и «категорийные» (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/. Плоские адреса ломаются, как только два разных раздела получают одинаковый код на разных ветках дерева.
Модуль «Человекопонятные ЧПУ» и urlrewrite.php
Красивый путь в адресной строке — это только половина дела. Нужно, чтобы сервер, получив /catalog/mebel/divany/, понял: «это запрос к комплексному компоненту каталога, раздел mebel/divany». За это отвечает модуль «Человекопонятные ЧПУ» (модуль urlrewrite) и файл urlrewrite.php в корне сайта.
urlrewrite.php — это массив правил обработки URL. Каждое правило состоит из трёх основных частей:
- CONDITION — регулярное выражение, которому должен соответствовать входящий адрес.
- RULE — как преобразовать «пойманные» части адреса в GET-параметры для скрипта.
- PATH — какой физический файл (обычно
index.phpстраницы каталога) должен обработать запрос.
Схематично одно правило выглядит так:
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
Разберём путь запроса от адресной строки до готовой страницы — это помогает понимать, где искать проблему, когда ЧПУ «не ловится». Цепочка такая:
- Браузер отправляет запрос на
/catalog/mebel/divany/. - Веб-сервер (через
.htaccess/ mod_rewrite) видит, что такого физического файла нет, и передаёт управление главному скрипту Битрикса. - Модуль «Человекопонятные ЧПУ» перебирает правила из
urlrewrite.phpи находит подходящее по CONDITION. - Правило определяет физический файл (
/catalog/index.php) и передаёт ему остаток пути. - Комплексный компонент каталога разбирает путь: понимает, что
mebel/divany— это раздел, и вызывает нужный дочерний компонент (список раздела, карточку товара или фильтр). - Компонент формирует страницу, а все ссылки на ней он тоже генерирует в ЧПУ-виде — цикл замкнут.
Ключевая идея: ЧПУ работает в обе стороны. На входе красивый путь превращается в параметры компонента, на выходе компонент генерирует красивые пути в ссылках. Если сломать одну из сторон, получаем классические симптомы: либо страницы открываются, но ссылки в меню ведут на «сырые» параметры, либо ссылки красивые, но по ним 404. Диагностика всегда начинается с вопроса «на какой стороне рвётся».
ЧПУ для умного фильтра: SEF-режим каталога
Отдельная и самая коварная тема — ЧПУ для умного фильтра. По умолчанию выбор значений фильтра формирует адрес с длинной строкой GET-параметров вида /catalog/divany/?set_filter=y&arrFilter_43_1234=Y&arrFilter_P1=.... Такой адрес нечитаем, плодит дубли и плохо индексируется. Решение — включить SEF-режим (человекопонятные адреса) для фильтра.
В параметрах комплексного компонента каталога и компонента catalog.smart.filter есть настройки ЧПУ фильтра:
- Включить ЧПУ (SEF_MODE). Переводит фильтр из режима GET-параметров в режим путей.
- Путь к разделу с фильтром. Папка каталога, внутри которой живут адреса фильтра.
- Шаблон правила (SEF_RULE). Как строится путь: например,
#SECTION_ID#/filter/#SMART_FILTER_PATH#/.
После включения выбор «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-шаблоны метатегов для умного фильтра.
Стабильность символьного кода при обмене с 1С
Самая дорогая ошибка с ЧПУ проявляется не сразу, а через несколько обменов с 1С: адреса товаров начинают меняться сами собой. Сегодня товар живёт по /catalog/divany/uglovoy-divan-milan/, а после ночного обмена — по /catalog/divany/uglovoy-divan-milan1/. Проиндексированные страницы отдают 404, позиции сыпятся, а причину ищут неделями.
Корень проблемы — в том, что при обмене товар может пересоздаваться, и если символьный код не зафиксирован, движок генерирует его заново. Возможные сценарии:
- Код не передаётся из 1С. Битрикс генерирует его транслитерацией названия. Изменилось название в 1С — изменился код и адрес.
- Коллизия при генерации. Два похожих названия дают один код, движок добавляет суффикс (
...1), и адрес «прыгает» между обменами. - Перегенерация существующего кода. Настройка «обновлять код при изменении» переписывает уже работающий адрес.
Правильная стратегия — сделать символьный код стабильным и независимым от обмена. Рабочие подходы:
| Подход | Суть | Когда применять |
|---|---|---|
| Передавать CODE из 1С | Код формируется в учётной системе и приходит в обмене | Есть контроль над правилами обмена |
| Привязать к XML_ID | Код строится один раз от неизменного внешнего кода | Название товара может меняться |
| Генерировать только при добавлении | Существующий код не перезаписывается при обмене | Каталог уже проиндексирован |
| Запретить суффиксы-хвосты | Контроль уникальности на этапе загрузки | Много похожих названий |
Главный принцип: URL товара не должен зависеть от того, сколько раз прошёл обмен. Один раз присвоенный адрес живёт с товаром до тех пор, пока вы сознательно не решите его сменить (и тогда поставите редирект). Про саму механику обмена и настройку правил выгрузки у нас есть материалы в рубрике SEO и продвижение и смежных разделах блога.
Вложенность и глубина URL
ЧПУ отражает дерево каталога, и здесь возникает вопрос: насколько глубоко его делать? Адрес /catalog/mebel/gostinaya/divany/uglovye/uglovoy-divan-milan/ честно повторяет пятиуровневую структуру, но становится длинным и громоздким. Слишком плоский /catalog/uglovoy-divan-milan/ теряет контекст. Истина посередине.
Практические ориентиры по глубине:
- 2–4 уровня вложенности для товара — комфортный диапазон:
/catalog/раздел/подраздел/товар/. - Не дублировать слова в пути.
/divany/divan-uglovoy/читается хуже, чем/divany/uglovoy-milan/. - Короткие коды разделов. Категории — это навигация, им идут ёмкие коды (
mebel,divany). - Осмысленная, а не механическая вложенность. Уровень в URL оправдан, если это реальный раздел со своим спросом, а не искусственная прослойка.
Есть и SEO-нюанс: чем глубже страница в структуре, тем «дальше» она от главной по кликам, и тем меньше внутреннего веса до неё доходит. Это не повод делать всё плоским, но повод не плодить лишние уровни. Товары, важные для продаж, не стоит закапывать на пятый-шестой уровень без необходимости. Баланс между логичной вложенностью и разумной глубиной — часть проектирования SEO-структуры сайта.
Дубли со слэшем и без, нормализация
Одна из самых частых технических проблем ЧПУ — дубли, различающиеся только завершающим слэшем: /catalog/divany и /catalog/divany/. Для человека это одна и та же страница, для поисковика — потенциально две разные с одинаковым содержимым. То же касается регистра (/Divany/ против /divany/) и повторяющихся слэшей (//divany/).
1С-Битрикс по своей логике «страниц-папок» тяготеет к адресам со слэшем на конце, поэтому канонической обычно выбирают версию со слэшем. Чтобы убрать дубли, нужен набор мер:
- 301-редирект к канонической форме. Адрес без слэша перенаправляется на адрес со слэшем (или наоборот — но единообразно по всему сайту).
- Единый регистр. Коды в нижнем регистре, а обращения к верхнему регистру редиректятся вниз.
- Схлопывание повторных слэшей.
//нормализуется в/. - rel="canonical". На странице прописан канонический адрес в единой форме — дополнительная страховка.
Важно выбрать одну форму и держать её везде: во внутренних ссылках, в sitemap.xml, в canonical и в редиректах. Если внутренние ссылки ведут на форму со слэшем, а sitemap отдаёт без слэша — вы сами создаёте противоречивые сигналы. Единообразие важнее того, какую именно форму вы выбрали.
Канонические адреса и ЧПУ
ЧПУ убирает большую часть параметрических дублей, но не все. Остаются сортировки, пагинация, UTM-метки, фильтры-«близнецы». Здесь в дело вступает канонический адрес — тег <link rel="canonical">, который говорит поисковику: «главная версия этой страницы вот тут».
Как ЧПУ и canonical делят зоны ответственности:
| Ситуация | Инструмент | Каноническая цель |
|---|---|---|
| Раздел с сортировкой | canonical | Раздел без параметра сортировки |
| Страница 2, 3, 4 пагинации | canonical / self-canonical | Своя страница или первая — по стратегии |
| Комбинация фильтра (мусорная) | canonical + noindex | Базовый раздел или главная SEO-комбинация |
| Товар в нескольких разделах | canonical | Один основной раздел товара |
| Слэш / регистр / UTM | 301-редирект | Единый чистый ЧПУ |
Частый вопрос — товар, доступный из нескольких разделов. Если один и тот же диван лежит и в «Угловые диваны», и в «Распродажа», у него могут быть два ЧПУ-адреса. Каноническим назначают один — основной раздел, — а остальные ссылаются на него через canonical. Так вес не делится, а поисковик понимает, какой адрес показывать в выдаче.
ЧПУ и пагинация
Списки товаров разбиваются на страницы, и здесь ЧПУ снова сталкивается с параметрами. По умолчанию вторая страница раздела выглядит как /catalog/divany/?PAGEN_1=2. Это работоспособно, но параметр в адресе — не самый чистый вариант. Многие проекты переводят пагинацию в ЧПУ-вид: /catalog/divany/page-2/.
Что важно учесть при работе с пагинацией и ЧПУ:
- Первая страница — без суффикса.
/catalog/divany/, а не/catalog/divany/page-1/: иначе первая страница задваивается. - Единый формат. Либо везде
?PAGEN_1=, либо вездеpage-N/— без смешения. - Каноникал по стратегии. Либо каждая страница пагинации self-canonical (и индексируется), либо все канонизируются на первую — решение зависит от задач.
- Ссылки навигации в том же формате. Кнопки «вперёд/назад» должны вести на выбранный формат адресов.
Наш собственный блог, кстати, использует именно ЧПУ-пагинацию вида /articles/page-2/ с чистой первой страницей и корректными rel="prev"/"next" — это дружелюбный к поисковику и к человеку формат. Для каталога подход тот же: пагинация должна быть предсказуемой и не плодить параметрические дубли.
Редиректы 301 при смене URL
Рано или поздно адрес приходится менять: переименовали раздел, перестроили дерево каталога, перешли с параметров на ЧПУ, поправили символьный код. Любая смена URL проиндексированной страницы без редиректа — это потеря: поисковик видит 404 там, где была страница, теряет её позиции и накопленный вес.
Спасение — редирект 301 (постоянное перенаправление). Он говорит поисковику: «страница переехала навсегда, вот новый адрес», и передаёт новому URL вес старого. Правила простые, но их легко нарушить:
- Соберите карту старых адресов. Выгрузите проиндексированные URL из вебмастера и логов, особенно старые
?ELEMENT_ID=...и прежние ЧПУ. - Сопоставьте старое → новое. Каждый старый адрес должен вести на конкретный релевантный новый, а не на главную «оптом».
- Настройте 301. Массовые правила — через
urlrewrite.phpили.htaccess, точечные важные — отдельными строками. - Избегайте цепочек. Не допускайте
A → B → C; ведите сразуA → C. - Проверьте коды ответа. Убедитесь, что отдаётся именно 301, а не 302 (временный) и не 200 на «мягкой» 404.
- Обновите внутренние ссылки. Меню, баннеры, sitemap — всё должно вести уже на новые адреса, а не через редирект.
Пошаговая настройка ЧПУ каталога
Сведём теорию в практический порядок действий для типового магазина на 1С-Битрикс. Последовательность важна: если поменять шаги местами, легко наплодить нестабильных кодов или сломать уже работающие адреса.
- Включите модуль «Человекопонятные ЧПУ». Убедитесь, что модуль
urlrewriteустановлен и активен, а веб-сервер настроен на mod_rewrite / обработку через главный скрипт. - Настройте транслитерацию инфоблока. В свойствах инфоблока включите автогенерацию символьного кода с транслитерацией — отдельно для разделов и элементов, с нижним регистром и заменой пробелов на дефис.
- Заполните символьные коды. Для уже загруженных разделов и товаров сгенерируйте недостающие коды пакетно, проверьте на коллизии и «хвосты» уникальности.
- Задайте шаблоны URL. Пропишите шаблоны адреса каталога, раздела (
#SECTION_CODE_PATH#) и элемента (#ELEMENT_CODE#) в настройках инфоблока и компонента. - Включите ЧПУ в комплексном компоненте. В параметрах
bitrix:catalogвключите режим ЧПУ и задайте папку каталога — правило автоматически пропишется вurlrewrite.php. - Включите SEF-режим фильтра. Настройте ЧПУ умного фильтра (SEF_MODE, SEF_RULE), проверьте, что комбинации формируют чистые пути.
- Настройте нормализацию и canonical. Единый слэш, единый регистр, rel="canonical" на канонические формы.
- Подготовьте редиректы 301. Со старых адресов (параметров и прежних ЧПУ) на новые.
- Проверьте связку целиком. Прокликайте меню, карточки, фильтр и пагинацию: ссылки красивые, страницы открываются, дублей нет.
- Обновите 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 целыми группами. Важно не дублировать одни и те же правила на двух уровнях (сервер и Битрикс) так, чтобы они конфликтовали или зацикливались. Если перенаправление уже сделано на сервере — не делайте его же ещё раз в компоненте.
.htaccess сами по себе не работают — нужен корректный конфиг nginx. Это частая причина «ЧПУ включил, а всё равно 404»: файл .htaccess лежит, но веб-сервер его не читает. Проверяйте, какой именно сервер обрабатывает запросы.
Частые ошибки с ЧПУ
Эти промахи встречаются чаще всего и дорого обходятся в трафике и индексации:
- Не включили транслитерацию до загрузки каталога. Тысячи товаров без символьного кода, в адресах — числовые ID.
- Код перегенерируется при обмене с 1С. Адреса «едут» после каждого обмена, проиндексированные страницы отдают 404.
- Сменили URL без редиректов 301. Потеряли позиции и вес там, где были рабочие страницы.
- Плоский
#SECTION_CODE#вместо#SECTION_CODE_PATH#. Коллизии кодов на разных ветках дерева, битые адреса. - Дубли со слэшем и без. Не выбрали каноническую форму — поисковик видит две страницы вместо одной.
- Открыли под индексацию все комбинации ЧПУ-фильтра. Тысячи почти одинаковых страниц-дублей вместо посадочных под спрос.
- Кириллица в адресах каталога. Percent-encoding ломает ссылки в аналитике, письмах и рекламе.
- Ручная правка urlrewrite.php поверх авто. Изменения затираются при пересохранении компонента.
- ЧПУ включили, но сервер не настроен. На nginx без правильного конфига всё отдаёт 404 несмотря на включённый режим.
- Цепочки редиректов. A → B → C вместо прямого A → C замедляют и «размывают» вес.
Чек-лист настройки
Сведём всё в практический список для приёмки перед запуском:
- Модуль ЧПУ активен. «Человекопонятные ЧПУ» включён, веб-сервер передаёт пути в главный скрипт.
- Транслитерация настроена. Автогенерация кода с нижним регистром и дефисами включена для разделов и элементов.
- Коды заполнены. У всех разделов и товаров есть символьный код без «хвостов» уникальности.
- Шаблоны URL заданы. Раздел на
#SECTION_CODE_PATH#, элемент на#ELEMENT_CODE#, всё согласовано с компонентом. - ЧПУ фильтра включён. SEF-режим работает, чистые пути формируются, индексируется только спрос.
- Код стабилен при обмене. CODE привязан к XML_ID или передаётся из 1С, перегенерация запрещена.
- Дубли устранены. Единый слэш, единый регистр, canonical на канонические формы.
- Редиректы 301 готовы. Старые адреса ведут на новые напрямую, без цепочек, с кодом 301.
- Sitemap чистый. В карте только новые ЧПУ без параметрического мусора.
- Связка проверена. Меню, карточки, фильтр, пагинация — ссылки красивые, страницы открываются, 404 нет.
Вывод
ЧПУ в 1С-Битрикс — это не косметика адресной строки, а инфраструктура, на которой держится SEO-здоровье магазина. Человекопонятный URL строится из символьных кодов разделов и товаров, включается модулем «Человекопонятные ЧПУ» и правилами обработки URL, а для фильтра — SEF-режимом каталога. Сделать красивый адрес несложно; по-настоящему важно сделать его стабильным — чтобы он не менялся при обмене с 1С, не двоился из-за слэша и не терялся при переездах.
Соберите связку целиком: транслитерация и заполненные коды, согласованные шаблоны URL, стабильный символьный код на XML_ID, канонические адреса, ЧПУ-фильтр только под спрос и заранее подготовленные редиректы 301. Настроенная один раз эта дисциплина работает годами: каталог растёт, товары приходят и уходят через обмен, а адреса остаются чистыми, читаемыми и постоянными — ровно такими, какими их любят и люди, и поисковики.