Как работает urlrewrite.php в Битрикс и зачем он нужен
В 1С-Битрикс файл urlrewrite.php отвечает за обработку «красивых» URL и маршрутизацию запросов к компонентам. Именно благодаря ему страницы вида /catalog/noutbuki/ или /blog/chto-takoe-php-fpm/ открываются без физических файлов и работают через единый шаблон.
Многие разработчики вспоминают о urlrewrite.php только тогда, когда начинают появляться ошибки 404, перестают открываться разделы каталога или возникают проблемы после переноса сайта. Разберем, как работает этот механизм и что нужно знать при его настройке.
Что такое urlrewrite.php в Битрикс
Файл /urlrewrite.php находится в корне сайта и содержит массив правил, по которым Битрикс определяет, какой компонент должен обработать запрошенный URL.
Пример записи:
array(
'CONDITION' => '#^/catalog/#',
'RULE' => '',
'ID' => 'bitrix:catalog',
'PATH' => '/catalog/index.php',
'SORT' => 100,
),
Если пользователь открывает адрес:
https://site.ru/catalog/noutbuki/
то сервер передает запрос в urlrewrite.php, который определяет, что URL относится к компоненту каталога, и выполняет файл:
/catalog/index.php
Уже сам компонент понимает, что нужно показать раздел «Ноутбуки».
Как работает маршрутизация
Схема обработки выглядит следующим образом:
- Пользователь открывает URL.
- Nginx или Apache перенаправляет запрос в index.php.
- Битрикс подключает файл urlrewrite.php.
- Происходит поиск подходящего правила.
- Запускается нужный компонент.
- Компонент выводит страницу.
По сути, urlrewrite.php является простым роутером, работающим на основе регулярных выражений.
Когда записи создаются автоматически
Обычно вручную редактировать файл не требуется. Правила добавляются автоматически при:
- создании комплексных компонентов;
- настройке ЧПУ (SEF_MODE);
- установке модулей и решений Marketplace;
- создании каталогов, блогов, новостей;
- работе мастеров установки.
Структура записи
[
"CONDITION" => "#^/blog/#",
"RULE" => "",
"ID" => "bitrix:news",
"PATH" => "/blog/index.php",
"SORT" => 100
]
Где:
- CONDITION — регулярное выражение для проверки URL;
- RULE — дополнительные параметры;
- ID — компонент, которому принадлежит правило;
- PATH — файл, который будет выполняться;
- SORT — приоритет правила.
Типичные проблемы с urlrewrite.php
Ошибка 404 после переноса сайта
После миграции сайта файл может не содержать актуальных правил или иметь неверные права доступа.
Решение:
- проверить наличие файла;
- проверить права доступа;
- пересохранить настройки комплексного компонента;
- очистить кеш.
Не открываются разделы каталога
Часто проблема возникает после ручного редактирования файла или удаления записей.
Можно восстановить правила через:
Настройки → Настройки продукта → Обработка адресов
или просто пересохранить параметры компонента.
Конфликт нескольких правил
Если несколько регулярных выражений подходят под один URL, будет использовано правило с меньшим значением SORT.
Например:
#^/catalog/#
#^/catalog/sale/#
При неправильном порядке более общее правило может перехватывать запросы.
Можно ли редактировать файл вручную?
Да, но делать это стоит только при полном понимании механизма работы.
Неправильное регулярное выражение может привести к:
- циклическим перенаправлениям;
- ошибкам 404;
- неработающим компонентам;
- проблемам с SEO.
Лучше использовать штатные средства Битрикс или API:
CBXVirtualIo::GetInstance();
либо пересохранять настройки компонентов.
Как проверить работу urlrewrite.php
Можно временно добавить в начало файла:
echo "urlrewrite работает";
die();
Если при открытии любой ЧПУ-страницы появляется сообщение, значит запрос проходит через роутер Битрикс.
После проверки обязательно удалите отладочный код.
Когда urlrewrite.php не участвует в обработке
Файл не используется, если:
- запрашивается существующий файл;
- обращение идет к изображениям или CSS;
- URL обрабатывается правилами nginx или Apache раньше Битрикс;
- веб-сервер настроен неправильно.
Заключение
Файл urlrewrite.php является центральным элементом маршрутизации в 1С-Битрикс. Он связывает красивые URL с компонентами системы и обеспечивает работу каталогов, блогов, новостей и других разделов сайта.
В большинстве случаев редактировать его вручную не требуется. Если на сайте появились ошибки 404, перестали открываться разделы или возникли проблемы после переноса проекта, стоит начать диагностику именно с проверки urlrewrite.php.
Комментарии