К статье
Практический материал

Администрирование · 11 мин

Как сделать редирект в 1С-Битрикс

Как настроить 301 и 302 редирект в 1С-Битрикс: через админку, .htaccess, urlrewrite.php и PHP. Пошаговые инструкции, проверка результата и типичные ошибки.

Редирект в 1С-Битрикс нужен при смене адресов страниц, переезде на новый домен, склейке зеркал сайта, переносе разделов каталога или исправлении дублей страниц. Платформа предлагает несколько уровней настройки перенаправлений: от простых правил в административной панели до серверных директив Apache и Nginx. Выбор способа зависит от количества адресов, типа редиректа и доступа к серверу.

Главное правило: для постоянного переноса страницы используется код 301, для временного — 302. Поисковые системы по-разному обрабатывают эти коды: 301 передаёт накопленный «вес» страницы на новый адрес, 302 сохраняет в индексе старый URL. Ошибка в выборе кода приводит к потере позиций или к тому, что старая страница продолжает висеть в выдаче месяцами.

Ниже разобраны рабочие способы настройки редиректов в Битриксе — от самого простого к самому гибкому, с проверкой результата и разбором типичных ошибок.

Какие виды редиректов бывают и какой выбрать

Перед настройкой важно определить тип перенаправления, потому что от этого зависит и код ответа сервера, и поведение поисковых систем, и кеширование в браузере пользователя.

  • 301 (Moved Permanently) — постоянный редирект. Страница переехала навсегда, поисковик переносит сигналы ранжирования на новый адрес. Браузеры агрессивно кешируют такой ответ, поэтому отменить его «мгновенно» не получится.
  • 302 (Found) — временный редирект. Старый адрес остаётся в индексе. Подходит для технических работ, акций, A/B-тестов.
  • 307/308 — современные аналоги 302 и 301, сохраняющие метод запроса (важно для форм и API). В типовых SEO-задачах сайта на Битриксе обычно достаточно 301/302.
Маршрут решения

Как выбрать способ настройки

Нужно перенаправить несколько конкретных страниц без доступа к серверуИспользуйте административный раздел «Обработка адресов» или модуль редиректов из Маркетплейса
Нужны массовые правила, регулярные выражения, склейка www/без www или переезд на HTTPSНастраивайте .htaccess для Apache или server-блок для Nginx
Редирект зависит от логики: группа пользователя, наличие товара, языкИспользуйте LocalRedirect() в init.php или обработчиках событий

Способ 1. Редирект через административную панель

Самый доступный способ, не требующий доступа к файлам сервера. В административной части перейдите в Настройки → Настройки продукта → Обработка адресов (UrlRewrite). Здесь управляются правила ЧПУ, но для простых перенаправлений удобнее раздел Настройки → Перенаправления (Redirects), если он доступен в вашей версии, либо специализированный модуль.

Для добавления правила укажите старый адрес (относительный, начиная со слэша), новый адрес и код ответа. Сохраните правило и сразу проверьте его в браузере в режиме инкогнито — иначе на результат может повлиять закешированный ответ.

Ограничение этого способа: правила хранятся в базе данных и обрабатываются на уровне PHP, то есть каждый запрос к старому адресу всё равно запускает ядро Битрикса. Для сайтов с высокой нагрузкой серверные редиректы (.htaccess/Nginx) работают быстрее.

Способ 2. Редирект через .htaccess (Apache)

Файл .htaccess находится в корне сайта. Правила редиректов нужно размещать выше стандартного блока Битрикса, который передаёт обработку на urlrewrite.php, иначе правила могут конфликтовать или не сработать.

Примеры типовых правил:

# Одиночный 301-редирект

Redirect 301 /old-page/ /new-page/

Редирект с регулярным выражением (mod_rewrite)

RewriteEngine On

RewriteRule ^catalog/old-section/(.*)$ /catalog/new-section/$1 [R=301,L]

Склейка www → без www

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]

RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

Принудительный HTTPS

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Обратите внимание на флаги: R=301 задаёт код ответа, L останавливает дальнейшую обработку правил. Без флага L правило может конфликтовать с последующими директивами Битрикса.

Способ 3. Редирект через Nginx

Если сайт работает на Nginx (или связке Nginx + Apache, где Nginx отвечает первым), редиректы эффективнее задавать в конфигурации виртуального хоста. .htaccess в этом случае может вообще не обрабатываться.

# Одиночный редирект

location = /old-page/ {

return 301 /new-page/;

}

Склейка www

server {

server_name www.example.com;

return 301 https://example.com$request_uri;

}

После правки конфигурации проверьте её командой nginx -t и только при успешной проверке перезагружайте сервис: systemctl reload nginx. Правка конфигов Nginx требует root-доступа — на виртуальном хостинге этот способ обычно недоступен.

Способ 4. Программный редирект через PHP

Когда перенаправление зависит от условий — авторизации пользователя, наличия товара, региона, типа устройства — используется API Битрикса. Основная функция: LocalRedirect(), которая корректно завершает выполнение страницы и отправляет нужные заголовки.

<?

// В /bitrix/php_interface/init.php

AddEventHandler("main", "OnBeforeProlog", function() {

$uri = \Bitrix\Main\Context::getCurrent()->getRequest()->getRequestUri();

if ($uri === '/old-catalog/') {

LocalRedirect('/catalog/', false, '301 Moved Permanently');

}

});

?>

Третий параметр определяет код ответа. Если его не указать, Битрикс по умолчанию отправляет 302 — учитывайте это при SEO-задачах. Функция LocalRedirect проверяет, что адрес ведёт на текущий сайт; для внешних редиректов используйте header('Location: ...') с последующим die(), но делайте это осознанно.

Редиректы, добавленные через LocalRedirect в init.php, срабатывают только после загрузки ядра. Если страницы отдаются из композитного или файлового кеша, перенаправление может не выполниться — для таких адресов надёжнее серверные правила.
ПЗ
Практическое замечание

Способ 5. Модули редиректов из Маркетплейса

Для контент-менеджеров и SEO-специалистов без доступа к коду удобны готовые модули из Маркетплейса 1С-Битрикс. Они добавляют в админку интерфейс управления перенаправлениями с поддержкой массового импорта из CSV, регулярных выражений, счётчиков срабатываний и логирования 404-х ошибок.

Типовой сценарий работы с таким модулем: установка из Маркетплейса → импорт таблицы соответствий «старый URL — новый URL» → выбор кода ответа → проверка нескольких адресов вручную. Лог 404-х ошибок особенно полезен после миграции сайта: он показывает, какие старые адреса ещё посещаются и требуют редиректа.

Минус подхода тот же, что у административного раздела: обработка идёт на уровне PHP, и при большом количестве правил (тысячи записей) стоит проверять влияние на скорость ответа.

Как проверить, что редирект работает правильно

Проверять результат нужно не только «глазами в браузере», но и по HTTP-заголовкам. Браузер может показать конечную страницу, скрыв цепочку из нескольких редиректов, которая вредит скорости и SEO.

bash
curl -I -L --max-redirs 5 https://site.ru/old-page/

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

Контрольные точки

Как проверить результат

Код ответа старого URL
Норма

Один ответ 301 (или 302 для временного) с заголовком Location на новый адрес

Тревожный признак

Код 200 на старом адресе или цепочка из 2+ редиректов

Конечная страница
Норма

Новый URL отдаёт код 200 и корректный контент

Тревожный признак

Редирект ведёт на 404 или циклическое перенаправление

Поведение в браузере
Норма

В режиме инкогнито адрес мгновенно подменяется новым

Тревожный признак

Бесконечная загрузка или ошибка ERR_TOO_MANY_REDIRECTS

Типичные ошибки при настройке редиректов

Типичные ошибки
01
Цепочки редиректов: страница A → B → C. Каждое звено замедляет загрузку и ослабляет передачу SEO-сигналов. Правило должно вести сразу на финальный адрес.
02
Циклические редиректы: A ведёт на B, а B обратно на A. Браузер выдаёт ERR_TOO_MANY_REDIRECTS, страница выпадает из индекса.
03
Использование 302 вместо 301 при постоянном переносе: старый адрес остаётся в выдаче, трафик и позиции делятся между двумя URL.
04
Правила в .htaccess размещены после блока Битрикса и не срабатывают, потому что запрос уже ушёл в urlrewrite.php.
05
Редирект без учёта GET-параметров: теряются UTM-метки и параметры фильтров, что ломает аналитику и работу каталога.
06
Забытый сброс кеша: после настройки правил композитный кеш продолжает отдавать старую страницу, и кажется, что редирект не работает.

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

Ограничения и когда нужен разработчик

Самостоятельно безопасно настраивать: одиночные редиректы через админку или модули, простые правила в .htaccess с обязательной резервной копией, проверку через curl и браузер. Этого достаточно для большинства задач контентного сайта.

К разработчику или администратору сервера стоит обращаться, если нужны: правки конфигурации Nginx на боевом сервере, массовые редиректы при смене структуры каталога с тысячами товаров, перенаправления с сохранением сложных GET-параметров, мультидоменная логика или редиректы, завязанные на бизнес-логику (остатки, цены, персонализация). Ошибка в этих сценариях стоит дороже, чем время специалиста.

Итог

Что важно запомнить

Для постоянного переноса используйте 301, для временного — 302. Простые правила настраиваются в админке или модулем, массовые — в .htaccess или Nginx, условные — через LocalRedirect(). Перед правкой серверных файлов делайте копии, после настройки проверяйте код ответа через curl и убеждайтесь, что нет цепочек и циклов.

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

Чем 301 редирект отличается от 302 для SEO?

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

Почему редирект не срабатывает, хотя правило добавлено?

Чаще всего виноват кеш: браузерный (проверяйте в режиме инкогнито), композитный кеш Битрикса (сбросьте в настройках) или серверное кеширование. Вторая причина — порядок правил в .htaccess: директива редиректа должна стоять до блока, передающего запросы ядру Битрикса.

Как перенаправить все страницы старого раздела на новый?

Используйте правило с регулярным выражением в .htaccess: RewriteRule ^old-section/(.*)$ /new-section/$1 [R=301,L]. Оно сохранит вложенность адресов. Если соответствие адресов не одинаковое (структура изменилась), потребуется таблица соответствий и модуль редиректов или индивидуальные правила.

Можно ли сделать редирект без доступа к серверу?

Да. Раздел обработки адресов в административной панели и модули из Маркетплейса работают полностью через веб-интерфейс. Ограничение — правила обрабатываются на уровне PHP, что чуть медленнее серверных директив и требует работающего ядра сайта.

Опасно ли удалять старые редиректы со временем?

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

Что делать, если появилась ошибка ERR_TOO_MANY_REDIRECTS?

Это циклическое перенаправление: два правила ссылаются друг на друга. Проверьте цепочку командой curl -I -L и найдите конфликт — типичные пары: http↔https, www↔без www, правило в .htaccess против правила в модуле редиректов. Оставьте одно корректное правило, остальные отключите, затем очистите кеш браузера.