Администрирование · 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.
Как выбрать способ настройки
Способ 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.
curl -I -L --max-redirs 5 https://site.ru/old-page/Команда покажет код каждого ответа в цепочке. Идеальный результат: один ответ 301 и сразу конечная страница с кодом 200. Дополнительно проверьте адрес в инструментах для вебмастеров поисковых систем — там видно, как робот обрабатывает перенаправление.
Как проверить результат
Один ответ 301 (или 302 для временного) с заголовком Location на новый адрес
Код 200 на старом адресе или цепочка из 2+ редиректов
Новый URL отдаёт код 200 и корректный контент
Редирект ведёт на 404 или циклическое перенаправление
В режиме инкогнито адрес мгновенно подменяется новым
Бесконечная загрузка или ошибка ERR_TOO_MANY_REDIRECTS
Типичные ошибки при настройке редиректов
Отдельная частая ситуация — конфликт редиректа с ЧПУ-правилами инфоблоков. Если новый адрес обрабатывается компонентом каталога, а серверное правило перехватывает его раньше, возможны непредсказуемые результаты. Проверяйте такие связки на тестовых адресах до массового применения.
Ограничения и когда нужен разработчик
Самостоятельно безопасно настраивать: одиночные редиректы через админку или модули, простые правила в .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 против правила в модуле редиректов. Оставьте одно корректное правило, остальные отключите, затем очистите кеш браузера.