Как настроить 301-редиректы на 1С-Битрикс: SEO-модуль, urlrewrite и проверка без петель

Как настроить 301-редиректы на 1С-Битрикс: SEO-модуль, urlrewrite и проверка без петель

Сменили ЧПУ, перенесли раздел или "быстро" воткнули редирект в init.php – и старые адреса уходят в 404, 302 или бесконечную петлю ERR_TOO_MANY_REDIRECTS. На 1С-Битрикс: Управление сайтом (это не Bitrix24) 301 настраивают на одном из трёх слоёв: SEO-админка, сервер (.htaccess/nginx) или код. Ниже – карта "какой слой когда", правильный LocalRedirect без скрытого 302 и проверка curl без цепочек.

После смены структуры URL нужен один прямой hop: старый адрес → сразу актуальный, статус именно 301. Админка SEO удобна для десятков и сотен правил; тысячи и склейки доменов лучше отдавать серверу. LocalRedirect по умолчанию даёт 302 – для SEO статус "301 Moved Permanently" нужно указывать явно третьим параметром. Правила в .htaccess ставьте выше блока urlrewrite.php, иначе Битрикс перехватит запрос раньше редиректа.

ЧПУ (человекопонятные URL) – это маршрутизация через urlrewrite.php, а не таблица постоянных переездов. Путать их опасно: "Обработка адресов" делает красивые пути, а 301 говорит поисковику "страница навсегда переехала". Если задача – только HTTP→HTTPS, смотрите отдельный гайд по установке SSL на Битрикс. Если URL удалили без замены – чаще нужна честная 404, а не редирект на главную: см. настройку страницы 404.

Разведите задачи: когда нужен 301, а когда – другой инструмент

Мокап таблицы: когда 301, а когда другой инструмент на Битрикс

Делайте 301, когда адрес страницы изменился, а контент (или близкий аналог) остался. Не делайте 301 "на всякий случай" со всех битых ссылок на главную – так вы размываете сигналы и путаете пользователя.

Ситуация Что ставить Куда смотреть
Сменили ЧПУ каталога, переименовали раздел 301 old → new Эта статья + SEO-модуль / сервер
Только переход на HTTPS 301 протокола на сервере гайд SSL (B19)
Страницу удалили без замены HTTP 404 страница 404 (B23)
Полный перенос сайта на Битрикс Карта URL + массовые 301 перенос сайта (B12)
Общий SEO-скелет (sitemap, модуль, мета) Чек-лист, не только редиректы SEO на Битрикс (B07)

Рекомендация: сначала выпишите таблицу "старый URL → новый URL", потом выберите один слой правил. Два слоя на одни и те же пути почти гарантируют цепочку или петлю.

Настройте 301 через SEO-модуль в админке

UI-мокап SEO-модуля Битрикс: форма правила 301-редиректа

Для владельца сайта это самый понятный путь: не лезть в конфиг сервера. В админке откройте Маркетинг → Поисковая оптимизация → раздел редиректов (название пункта зависит от редакции, но живёт в модуле SEO).

  1. Соберите список старых адресов из Вебмастера, Search Console и старой карты сайта.
  2. Для каждого правила укажите источник и целевой путь на том же сайте (или полный URL, если домен тот же).
  3. Где поддерживаются маски – используйте шаблон вроде /old-category/* → /new-category/*, чтобы не копировать сотни строк вручную.
  4. Сохраните правило и сразу проверьте один URL через curl (см. чек-лист ниже).
  5. Не дублируйте то же правило в .htaccess "на всякий случай" – оставьте один слой.

Ориентир из практики внедрений: до сотен правил админка обычно удобнее; тысячи строк и сложные regex – лучше на nginx map или Apache. Не делайте: править urlrewrite.php вручную "вместо" SEO-таблицы – это ЧПУ, не постоянный переезд.

Схема выбора слоя:
Таблица old→new готова → до ~сотен правил: SEO-админка → тысячи / домены / www: сервер (.htaccess или nginx) → нужна логика PHP (условия, пользователь, корзина): LocalRedirect / D7 с явным 301

Пропишите правила на сервере выше urlrewrite

Схема слоёв: серверные правила выше urlrewrite и LocalRedirect

Штатный .htaccess Битрикс гонит "несуществующие" пути в /bitrix/urlrewrite.php. Если ваш Redirect 301 стоит ниже этого блока, запрос уже ушёл в PHP – и "правило не работает".

Делайте так на Apache:

  1. Откройте корневой .htaccess и найдите блок RewriteRule на urlrewrite.php.
  2. Выше него добавьте постоянные переезды. Для простого внутрихостового случая часто хватает: Redirect 301 /old/ /new/.
  3. Для шаблонов используйте RewriteRule с флагами [R=301,L] – L значит "остановиться, дальше не идти".
  4. Склейку www/без-www и редкие межхостовые правила держите после RewriteEngine On, но всё равно до массового ухода в urlrewrite.
  5. Сохраните файл и проверьте заголовки без браузера (браузер кеширует 301 агрессивно).

На nginx предпочтительнее return 301, а не тяжёлый rewrite. Массовые пары удобно держать в map $request_uri $new_uri, а роутинг Битрикс – через try_files … /bitrix/urlrewrite.php. Канонизацию index.php/index.html не раздувайте здесь: узкий сценарий уже разобран в базовых редиректах index.php.

Рекомендация: серверный 301 быстрее и надёжнее PHP, если правило статическое. Не делайте: копировать одни и те же пути и в nginx, и в init.php.

Вызовите LocalRedirect и D7 правильно – без скрытого 302

LocalRedirect – функция ядра: "отправь браузер на другой адрес". По официальной справке статус по умолчанию – "302 Found" (временный). Постоянный 301 доступен с версии 8.5.1 и задаётся третьим параметром. Второй параметр – не код ответа, а skip_security_check: защита от фишинга (нельзя молча увести пользователя на чужой домен).

Типичная ошибка с форумов: LocalRedirect($url, "301 Moved Permanently") – второй аргумент воспринимается как skip, статус остаётся 302. Правильный вызов:

LocalRedirect("/new-path/", false, "301 Moved Permanently");

В современном коде D7:

$response = new \Bitrix\Main\Engine\Response\Redirect('/new-path/');
$response->setStatus('301 Moved Permanently');
// вернуть $response из контроллера / обработчика

Делайте программный 301 только когда нужна логика (роль пользователя, условие заказа, динамический путь). Не делайте: редирект HTTP↔HTTPS в init.php параллельно с nginx – классическая петля за прокси (сервер уже отдал HTTPS, PHP думает что HTTP и снова шлёт на https). Смотрите X-Forwarded-Proto и настройки https в .settings.php.

Избегите петель, цепочек и поломки корзины

ERR_TOO_MANY_REDIRECTS в браузере значит: A шлёт на B, B обратно на A (или круг из трёх адресов). Частые причины на CMS:

  • Дубль HTTPS: nginx + LocalRedirect на протокол.
  • Слеш и index: /catalog ↔ /catalog/ ↔ /catalog/index.php гоняют друг друга.
  • Редирект в init.php после логина ломает корзину и личный кабинет.
  • Композит: редирект во время композитной отдачи даёт Ajax (error:redirect) – сначала почините hop, потом сбросьте кеш.
  • Цепочка A→B→C: поисковик тратит краул-бюджет; сразу ведите A→C.

Рекомендация: перед массовым импортом прогоните 10–20 критичных URL (главная, карточки, корзина, ЛК, 2–3 старых ЧПУ). Не делайте: оставлять "временный" 302 на постоянном переезде – вес и сигналы передаются хуже.

Проверьте результат: curl, Вебмастер и sitemap

Браузер врёт из-за кеша. Проверка "на пальцах":

  1. Выполните curl -I https://site.ru/old-url/ – в первой строке должен быть 301, в Location – финальный путь без лишних хопов.
  2. Добавьте curl -I -L --max-redirs 5: если упрётесь в лимит – есть петля или длинная цепочка.
  3. Убедитесь, что новый URL отдаёт HTTP 200, а не снова 301.
  4. Обновите sitemap и отправьте на переобход в Яндекс.Вебмастере и Google Search Console.
  5. Через несколько дней сверьте отчёты на "циклические перенаправления" и массовые 404 по старым путям.

Если карта редиректов разрослась после переезда или смены каталога и нужен разбор руками – можно обсудить аудит на контактах. Базовый SEO-контур (модуль, sitemap, индексация) держите по чек-листу SEO на Битрикс.

Что дальше: таблица old→new → один слой правил → curl -I на выборке → обновить sitemap → мониторинг Вебмастер/GSC. Не смешивайте HTTPS, 404 и миграцию в одну "простыню" правил без карты.
Автор: Максим Мольков, разработчик 1С-Битрикс.
Источники: официальная справка LocalRedirect и urlrewrite (dev.1c-bitrix.ru), D7 Response\Redirect, защита редиректов в безопасности CMS; практика .htaccess/nginx и проверка curl на проектах Управление сайтом.

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

Как сделать 301 редирект в Битрикс?

Выберите слой: SEO-админка для списка правил, .htaccess/nginx выше urlrewrite для массовых и серверных склеек, LocalRedirect или D7 Redirect только если нужна логика PHP – и всегда с явным статусом "301 Moved Permanently".

Где находится модуль редиректов?

В админке: Маркетинг → Поисковая оптимизация → раздел настройки редиректов модуля SEO. Точное имя пункта зависит от редакции, но путь всегда через модуль "Поисковая оптимизация", не через "Обработку адресов".

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

urlrewrite – это ЧПУ: как красивый путь открывает нужный раздел или карточку. SEO-редирект – постоянный переезд старого URL на новый со статусом 301 для пользователей и поисковиков.

Почему LocalRedirect отдаёт 302, хотя я хотел 301?

По умолчанию LocalRedirect ставит "302 Found". Нужен третий параметр "301 Moved Permanently"; второй параметр – skip_security_check (обычно false). Вызов с двумя аргументами, где второй – строка статуса, оставляет 302.

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

Запустите curl -I на старый URL и curl -I -L --max-redirs 5. Один hop 301 + Location на рабочий 200 – норма. Если команда упирается в лимит редиректов или Location крутит www/HTTPS/slash – ищите дубль правил в nginx, .htaccess и init.php.

Нужен ли 301, если страницу просто удалили?

Если замены нет – отдайте честный HTTP 404 и полезный шаблон "не найдено". 301 на главную со всех удалённых URL ухудшает UX и SEO; детали – в гайде про страницу 404 на Битрикс.

Читайте также

Интеграции с 1С и API
1074 6 мин.

Как настроить регистрацию и личный кабинет покупателя на 1С-Битрикс?

Пошаговая настройка регистрации на сайте битрикс: Главный модуль, main.register, system.auth.form и sale.personal.section с историей заказов и 152-ФЗ.
Интеграции с 1С и API
941 6 мин.

Как настроить скидки и промокоды на 1С-Битрикс: правила корзины и купоны

Пошаговый гайд по скидкам в CMS-магазине: скидка на товар, правило корзины от суммы, купоны с лимитом, приоритеты без конфликтов и тестовый заказ. Не Bitrix24.
Интеграции с 1С и API
759 15 мин.

Что такое компонент в Битриксе и как он работает

Каждый разработчик, впервые столкнувшийся с Битриксом, проходит через своеобразный обряд посвящения. Вначале кажется, что это просто CMS, где можно поправить HTML в визуальном редакторе или дописать пару строк CSS. Но однажды наступает момент, когда нужно изменить логику вывода новостей, отфильтровать товары по хитрому свойству или добавить на страницу нечто совершенно новое. И тут он впервые слышит это слово — «компонент». Для многих этот момент становится стеной. Система, казавшаяся понятной, вдруг превращается в черный ящик, полный непонятных файлов и странных переменных. Но стоит лишь раз заглянуть под капот, как эта стена рассыпается, превращаясь в набор удивительно логичных и мощных строительных блоков. Понимание компонентов — это тот самый щелчок, после которого разработка на Битрикс из мучения превращается в творчество.

Эта статья — ваш проводник в мир компонентов «1С-Битрикс». Мы не будем сыпать сухими терминами из документации. Вместо этого мы совершим путешествие: от философии, заложенной в эту архитектуру, до мельчайших деталей её работы. Мы разберем компонент на атомы — его файлы, логику, шаблон, параметры — и соберем обратно, чтобы вы не просто знали, что это, но и глубоко понимали, почему это работает именно так. Это знание — ключ к эффективной и профессиональной разработке на Битрикс.

Интеграции с 1С и API
718 2 мин.

Установка Composer в 1С-Битрикс

Установка Composer в проекте на 1С-Битрикс требует учета особенностей платформы, чтобы обеспечить корректную работу и интеграцию с системой.