Обработка адресов (URL Rewrite) — это важнейший инструмент в 1С-Битрикс, позволяющий создавать удобные и понятные ссылки, которые благотворно влияют на юзабилити сайта и его SEO-показатели. В данном руководстве мы разберём основные механизмы перенаправления и переопределения адресов в Bitrix, научимся работать с файлом urlrewrite.php
, рассмотрим типовые сценарии и приведём максимум возможных примеров.

1. Зачем нужно управление адресами в 1С-Битрикс?
1С-Битрикс по умолчанию предоставляет ряд возможностей для управления URL, чтобы:
- Улучшить SEO: использование «человеко-понятных» ссылок положительно влияет на поисковую выдачу и облегчает индексацию страниц.
- Повысить удобство пользователя: короткий и логичный адрес проще запомнить, им проще делиться.
- Упрощённая маршрутизация: иногда нужно перенаправлять старые ссылки на новые, сохраняя доступ к контенту и избегая ошибок 404.
- Гибкая конфигурация: на крупных сайтах или интернет-магазинах нередко требуются уникальные правила обработки адресов.
2. Основные механизмы обработки URL
В 1С-Битрикс существует две основные составляющие, управляющие логикой URL:
- .htaccess
Это стандартный файл конфигурации веб-серверов (Apache, Nginx при условии аналогичной поддержки правил переписывания). В нём указываются общие правила, такие как перенаправления с
HTTP
наHTTPS
, удаление «www» и т. д. - urlrewrite.php
Это специальный PHP-файл в корне сайта (обычно располагается в папке
/
или/bitrix/urlrewrite.php
), который управляет внутренней логикой переписывания адресов в Bitrix. В этом файле указываются правила, определяющие, какие файлы-обработчики будут запускаться при обращении к конкретному URL.
Взаимодействие .htaccess и urlrewrite.php
- .htaccess (или конфигурация веб-сервера) первым обрабатывает входящий запрос. Если запрос не подходит под ряд исключений (например, ссылка не ведёт на реальный файл/папку), управление передаётся Bitrix.
- Bitrix через файл
urlrewrite.php
проверяет, подходит ли запрос под какие-либо правила внутри массива$arUrlRewrite
. Если подходит, то происходит переопределение пути на нужный файл-обработчик.
3. Структура urlrewrite.php
Рассмотрим типовой вид файла urlrewrite.php
:
<?php
$arUrlRewrite = array(
array(
"CONDITION" => "#^/catalog/([0-9]+)/#",
"RULE" => "ELEMENT_ID=$1",
"ID" => "",
"PATH" => "/catalog/detail.php",
"SORT" => 100,
),
// Другие правила
);
?>
У каждого элемента массива $arUrlRewrite
есть несколько ключей:
- CONDITION — условие (регулярное выражение), по которому определяется подходящий адрес.
- RULE — строка, содержащая дополнительные параметры для передачи в скрипт (может быть пустой).
- ID — используется для встроенных компонентов 1С-Битрикс (например, для ЧПУ новостей), часто бывает пустым при кастомной конфигурации.
- PATH — указывает путь к файлу, который будет обрабатывать запрос.
- SORT — приоритет срабатывания правила (чем меньше число, тем выше приоритет).
Пример 1: Простая переадресация на кастомный скрипт
Пусть у нас есть раздел /old/
, и мы хотим, чтобы при обращении к любому подадресу ^/old/(.*)
, пользователи и поисковики автоматически перенаправлялись на скрипт /new/index.php
. Можно добавить в urlrewrite.php
правило:
$arUrlRewrite = array(
array(
"CONDITION" => "#^/old/(.*)#",
"RULE" => "old_path=$1",
"ID" => "",
"PATH" => "/new/index.php",
"SORT" => 10,
),
// ...
);
В результате, если пользователь введёт в адресную строку что-то вида:
https://ваш_домен/old/articles/novinka.html
Система найдёт совпадение по CONDITION
, и, подставив old_path=articles/novinka.html
в строку $_GET
, передаст запрос на /new/index.php
. Внутри index.php
можно воспользоваться $_GET['old_path']
, чтобы получить исходные данные.
4. Использование регулярных выражений в CONDITION
Ключ CONDITION
принимает строку с регулярным выражением, обрамлённую символами #
(или другими разделителями). В примерах выше мы использовали:
#^/catalog/([0-9]+)/#
Это означает:
^/catalog/
— адрес должен начинаться с/catalog/
.([0-9]+)
— далее должна идти группа из одной или более цифр (в круглых скобках значит, что мы будем передавать содержимое этой группы как параметр).#
— окончание регулярного выражения.
Если нужное правило не сработало, значит строка просто не подходит под условие.
Пример 2: Перенос структуры разделов в один скрипт
Предположим, у нас есть структура /blog/<Категория>/<Подкатегория>/<Статья>.html
, и мы хотим обрабатывать её одним скриптом blog.php
. Тогда можно добавить правило:
array(
"CONDITION" => "#^/blog/([^/]+)/([^/]+)/([^/]+)\\.html#",
"RULE" => "category=$1&subcategory=$2&article=$3",
"ID" => "",
"PATH" => "/blog.php",
"SORT" => 100,
),
[^/]+
— значит «все символы, кроме/
, один и более раз».\\.html
— экранированная точка (\\.
), затемhtml
, чтобы чётко указать, что адрес заканчивается на.html
.- В
RULE
мы указываем названия GET-параметров (category
,subcategory
,article
), через которые вblog.php
можно получить часть адреса.
Таким образом, запрос вида
https://ваш_домен/blog/tech/frontend/bitrix-seo.html
будет превращён в вызов:
https://ваш_домен/blog.php?category=tech&subcategory=frontend&article=bitrix-seo
5. Порядок срабатывания правил (SORT)
Ключ SORT
отвечает за порядок, в котором будут проверяться правила. Чем меньше число, тем раньше будет происходить проверка. Это важно, чтобы более специфические условия срабатывали до общих.
Пример 3: Делим условия для блога и каталога
$arUrlRewrite = array(
// Более приоритетное правило для каталога
array(
"CONDITION" => "#^/catalog/([a-zA-Z0-9_-]+)/#",
"RULE" => "ELEMENT_CODE=$1",
"PATH" => "/catalog/detail.php",
"SORT" => 10,
),
// Далее правило для блога
array(
"CONDITION" => "#^/blog/([^/]+)/#",
"RULE" => "ARTICLE_CODE=$1",
"PATH" => "/blog/detail.php",
"SORT" => 20,
),
// И т. д.
);
Здесь мы хотим, чтобы при обращении к /catalog/что-то
срабатывало правило для каталога. Поэтому ему ставим SORT=10
. А правило для блога получит приоритетом ниже — SORT=20
.
6. Примеры с готовыми компонентами 1С-Битрикс
При использовании компонентов «Новости» или «Каталог» (особенно в режимах ЧПУ) 1С-Битрикс может автоматически генерировать правила в urlrewrite.php
. Например, при создании «Новостей» для ЧПУ может появиться правило вида:
array(
"CONDITION" => "#^/news/([0-9a-zA-Z_-]+)/#",
"RULE" => "ELEMENT_CODE=$1",
"ID" => "bitrix:news.detail",
"PATH" => "/news/index.php",
"SORT" => 100,
),
ID
здесь хранит идентификатор компонентаbitrix:news.detail
, чтобы система понимала, с каким компонентом работать.- По сути, всё равно происходит переадресация на
/news/index.php
, но уже со своими настройками компонента и параметрами.
Если у вас возникнет потребность настроить собственную логику ЧПУ и переопределить стандартные правила, вы можете вручную править CONDITION
, RULE
, PATH
, не забывая о приоритете.
7. Работа с .htaccess
Хотя основная логика в 1С-Битрикс лежит в urlrewrite.php
, не следует забывать и о файле .htaccess
. В нём задаётся базовое перенаправление:
<IfModule mod_rewrite.c>
RewriteEngine On
# Перенаправление со старого домена
RewriteCond %{HTTP_HOST} ^old-domain\\.ru [NC]
RewriteRule ^(.*)$ https://new-domain.ru/$1 [R=301,L]
# Удаляем www (или наоборот, добавляем)
RewriteCond %{HTTP_HOST} ^www\\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
# Основной блок для Bitrix
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L]
</IfModule>
- RewriteCond проверяет различные условия (например, что запрашиваемый файл не существует).
- RewriteRule производит собственно перенаправление. Чаще всего этот блок остаётся «как есть», чтобы передавать управление в Bitrix, а локальные правила для конкретных сценариев (например, переадресация со старого домена) добавляются выше основного блока.
Пример 4: Перенаправление каталога изображений на поддомен
Предположим, вы решили, что все изображения должны обслуживаться через поддомен img.site.ru
, и хотите перенаправлять все запросы из /upload/
на него:
RewriteCond %{HTTP_HOST} !^img\\.site\\.ru$ [NC]
RewriteCond %{REQUEST_URI} ^/upload/
RewriteRule ^(.*)$ https://img.site.ru/$1 [R=301,L]
Важно помнить: если такие картинки должны физически храниться на другом сервере, потребуется дополнительная конфигурация DNS/серверов. Однако при простом распределении ссылок можно обойтись подобным редиректом.
8. Практические примеры правил в urlrewrite.php
Рассмотрим несколько практических вариантов, часто встречающихся при разработке:
8.1. Перенаправление на раздел с учётом языка
Иногда требуется обрабатывать запросы по языковым префиксам, например /en/
, /de/
, /fr/
:
array(
"CONDITION" => "#^/(en|de|fr)/catalog/([0-9a-zA-Z_-]+)/#",
"RULE" => "lang=$1&ELEMENT_CODE=$2",
"ID" => "",
"PATH" => "/local/pages/catalog_detail.php",
"SORT" => 50,
),
Как это работает:
- Первые круглые скобки
(...)
задают группу (здесь —(en|de|fr)
), значит будут приниматься URL, начинающиеся с/en/
,/de/
,/fr/
. - Вторые круглые скобки
([0-9a-zA-Z_-]+)
указывают, что там может быть любой набор букв, цифр, символов «-» или «_». - В
RULE
мы прописываемlang=$1&ELEMENT_CODE=$2
, чтобы потом в$_GET
получить язык и код элемента.
8.2. Различные правила для GET-параметров
Допустим, у нас по умолчанию страница /search.php?type=products&sort=asc
, но мы хотим, чтобы пользователь видел /search/products/asc/
. Добавляем:
array(
"CONDITION" => "#^/search/([a-z]+)/([a-z]+)/#",
"RULE" => "type=$1&sort=$2",
"ID" => "",
"PATH" => "/search.php",
"SORT" => 60,
),
Теперь запрос
https://ваш_домен/search/products/asc/
превратится в
https://ваш_домен/search.php?type=products&sort=asc
8.3. Переопределение отдельных страниц
Если требуется перенести страницу /about/contacts.php
на /contacts/
, можно прописать:
array(
"CONDITION" => "#^/contacts/#",
"RULE" => "",
"ID" => "",
"PATH" => "/about/contacts.php",
"SORT" => 70,
),
В результате все запросы вида:
https://ваш_домен/contacts/
обработает файл /about/contacts.php
.
9. Как проверить работу правил переписывания?
После внесения изменений в urlrewrite.php
или .htaccess
стоит:
- Очистить кеш 1С-Битрикс. Для этого можно воспользоваться административной панелью (Раздел «Настройки» → «Инструменты» → «Очистка кеша»).
- Проверить правила. Введите в браузере URL, подходящий под новое правило. Убедитесь, что открывается нужная страница/скрипт.
- Посмотреть логи (если настроено логирование). В системном логе (например,
error_log
) может отобразиться причина, если правило не сработало.
Советы по отладке
- Временно отключите другие правила: если не уверены, какое правило может перехватывать запрос раньше, закомментируйте остальные, кроме одного нужного.
- Используйте инструменты разработчика: например, в браузере (Chrome, Firefox) можно посмотреть вкладку «Network» и отследить коды ответов (301, 302, 200, 404 и т. д.).
- Проверяйте регулярные выражения онлайн: существуют сайты для быстрой проверки RegEx. Убедитесь, что ваш шаблон корректно парсит строку.
10. Рекомендации по SEO при настройке адресов
- Используйте ЧПУ (человеко-понятные URL): вместо
page.php?id=100
лучшеarticles/bitrix-rewrite
. - 301 редиректы на новые адреса: если структура меняется, обязательно используйте редиректы с кодом 301. Так поисковые роботы поймут, что страница перемещена навсегда, а не пропала.
- Следите за дублированием: не допускайте, чтобы один и тот же контент был доступен по разным адресам без необходимости.
- Короткие адреса: не стоит чрезмерно усложнять URL вложенностью или дополнительными параметрами.
11. Заключение
Работа с адресами (URL Rewrite) в 1С-Битрикс позволяет гибко настраивать маршрутизацию и внешний вид ссылок, что крайне важно как для SEO, так и для удобства пользователей. Ключевым файлом для управления правилами является urlrewrite.php
, а его связка с файлом .htaccess
(или конфигурацией веб-сервера) даёт мощный инструмент для создания «чистых» и функциональных адресов.
Основные моменты, которые стоит помнить:
- Всегда проверяйте порядок правил и приоритет (
SORT
). - Регулярные выражения дают широкие возможности для гибкой настройки.
- Не забывайте про SEO: используйте 301 редиректы и удобочитаемые адреса.
- После всех изменений проверяйте работу правил и очищайте кеш.
Применяя описанные примеры и практики, вы сможете уверенно настраивать обработку адресов на сайте, сделанном на 1С-Битрикс, и добиваться максимально удобных URL для ваших посетителей и поисковых систем.