После смены ЧПУ в каталоге 1С-Битрикс Google Search Console показывает "Страница с переадресацией", а часть URL отдает 302 вместо 301. Типичная ловушка: в корневом .htaccess правило Redirect 301 /info/ стоит выше точечного /info/faq/, и вложенные разделы превращаются в site.rufaq. Параллельно глобальный http→https рвет ночной обмен 1С на /bitrix/admin/1c_exchange.php. За один проход вы выберете правильный уровень редиректа, настроите сценарий без цепочек и проверите ответ через curl.
HTTP 301 (Moved Permanently) - постоянное перенаправление: браузер и робот переходят на новый URL, а поисковик переносит сигналы со старой страницы. На 1С-Битрикс:Управление сайтом настраивается через .htaccess (блок #Редиректы), модуль "Поисковая оптимизация" (пары старый→новый URL), LocalRedirect($url, false, '301 Moved Permanently') или D7 \Bitrix\Main\Engine\Response\Redirect - в зависимости от того, нужен ли редирект до или после загрузки PHP. Сегодня откройте .htaccess, проверьте порядок частных правил выше общих и прогоните curl -I на старый URL.
На Битриксе редирект - не одна кнопка. .htaccess срабатывает до загрузки CMS, LocalRedirect - когда нужна логика из PHP, а urlrewrite.php вообще про маршрутизацию ЧПУ, не про SEO-переезд. Путаница трех уровней - главная причина, почему "я прописал Redirect 301", а в выдаче все еще старый адрес. Речь про 1С-Битрикс:Управление сайтом на своем хостинге, а не про Bitrix24 CRM.
Если вы только переезжаете с конструктора на коробку, сначала соберите карту URL - об этом в гайде Битрикс или конструктор для бизнеса. Здесь - практика на уже работающем сайте.
Разберите, что такое 301 редирект и когда нужен 302
301 - "адрес сменился навсегда". Поисковик переносит вес на новый URL. 302 - "временно зайдите сюда": робот не склеивает страницы. На Битрикс-сайте 301 нужен при смене ЧПУ, переходе http→https, выборе www или переезде домена. 302 - для A/B-теста, временной акции или авторизации, когда старый URL должен вернуться.
Делайте: для SEO-переезда везде один код 301. Не делайте: сваливать все старые URL на главную - Яндекс и Google ждут аналогичные страницы один к одному.
| Ситуация | Код ответа | Где настраивать на Битрикс |
|---|---|---|
| Смена URL раздела или товара | 301 | .htaccess, модуль SEO или LocalRedirect |
| http → https, www → без www | 301 | Блок #Редиректы в .htaccess (RewriteRule) |
| Временная акция / тест лендинга | 302 | LocalRedirect без третьего параметра или явный 302 |
| ЧПУ: /catalog/ → index.php?SECTION_ID= | 200 (внутренний rewrite) | urlrewrite.php, не HTTP-301 |
Выберите инструмент: .htaccess, SEO-модуль, LocalRedirect или urlrewrite
Четыре инструмента решают разные задачи: .htaccess - до PHP, модуль SEO - пары URL из админки, LocalRedirect - логика из базы, urlrewrite - маршрутизация ЧПУ, не HTTP-301. LocalRedirect() по умолчанию отдает 302; для SEO нужен третий параметр "301 Moved Permanently" (с версии 8.5.1).
| Метод | Когда брать | Ограничение |
|---|---|---|
| .htaccess (#Редиректы) | https, www, массовые статические пары URL | Нужен Apache или аналог; порядок правил критичен |
| Модуль SEO (редиректы) | Точечные пары старый→новый из админки | Не заменяет глобальный https/www |
| LocalRedirect / D7 Redirect | Условная логика, пагинация, данные из инфоблока | Дефолт 302 без явного статуса 301 |
| urlrewrite.php | Новая структура ЧПУ без смены домена | Не отдает 301 в браузере - только внутренний rewrite |
Делайте: глобальные правила - в .htaccess, точечные пары - в SEO-модуле, условия из PHP - в LocalRedirect. Не делайте: путать urlrewrite с SEO-переездом и дублировать одно правило в трех местах.
Настройте 301 в .htaccess: блок #Редиректы и порядок правил
Глобальные правила - в блок #Редиректы корневого .htaccess, до rewrite Битрикс. Перед правкой сделайте бэкап; на VPS проверьте mod_rewrite - на старте часто хватает VPS у Beget с поддержкой .htaccess.
- Откройте корневой .htaccess по FTP или SSH и найдите комментарий #Редиректы. Новые правила вставляйте туда, а не в середину блока urlrewrite.php.
- Для простой пары "старый путь → новый путь" на том же домене используйте Redirect 301 /old-path/ /new-path/. Например, после смены ЧПУ правило Redirect 301 /info/ /info-new/ должно стоять ниже Redirect 301 /info/faq/ /info/faq-new/ — иначе вложенные разделы уедут не туда.
- Для http→https и www объедините условия в один RewriteRule с флагом [R=301,L] - так меньше цепочек и ошибки ERR_TOO_MANY_REDIRECTS.
- Добавьте исключение для обмена 1С: RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ [NC] - до правила https, иначе ночная выгрузка уйдет в редирект-цикл.
- Если после редиректа нужны UTM-метки (?utm_source=...), используйте RewriteRule с флагом QSA - директива Redirect query string не сохраняет (подробнее в гайде как настроить UTM-метки).
- Сохраните файл и сразу проверьте curl -I на старый URL - до массового списка из десятков правил.
Пример глобального https с исключением обмена:
#Редиректы
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]
Делайте: тестируйте www и без www отдельно до полного списка Redirect. Не делайте: смешивать Redirect и RewriteRule для одного и того же URL - получите двойной hop или бесконечный цикл.
Добавьте пары URL в модуле "Поисковая оптимизация"
Штатный UI - для десятков пар URL без SSH. Путь: Маркетинг → Поисковая оптимизация → редиректы (старый→новый, тип 301). Это не "Обработка адресов" (urlrewrite для ЧПУ).
- Откройте админку → Маркетинг → Поисковая оптимизация.
- Добавьте пару: полный путь старой страницы и канонический новый URL на том же домене.
- Выберите тип 301 (постоянный), сохраните и сразу проверьте curl -I: модуль должен отдать один 301 без промежуточных hop. Для сотен URL из миграции рассмотрите импорт или .htaccess; маркетплейс-модули - только если штатных средств не хватает.
Делайте: вести таблицу старый→новый в Excel до заливки в админку. Не делайте: дублировать те же пары в .htaccess и в модуле SEO одновременно.
Настройте LocalRedirect и D7 Redirect с явным кодом 301
PHP-редирект - когда адрес зависит от свойств элемента или старого CODE. В component_epilog.php:
LocalRedirect('/catalog/new-section/', false, '301 Moved Permanently');
В D7 - \Bitrix\Main\Engine\Response\Redirect. Делайте: https в .htaccess, не в init.php без 301. Не делайте: массовый переезд только через LocalRedirect. При смене структуры через CUrlRewriter заранее планируйте разработку на 1С-Битрикс с картой URL.
Отделите urlrewrite.php от SEO-переезда
urlrewrite.php и $arUrlRewrite связывают ЧПУ с обработчиком: браузер остается на /catalog/ с кодом 200, адрес в строке не меняется. CUrlRewriter::Add добавляет правило маршрутизации, но не отдает HTTP 301 для переезда. Админка: Настройки → Обработка адресов. После смены ЧПУ обязательно пропишите 301 со старых проиндексированных путей - иначе робот продолжит ходить по устаревшим URL.
Делайте: после смены правил ЧПУ добавьте 301 со старых путей. Не делайте: ожидать, что urlrewrite сам "переедет" позиции в Google.
Проверьте редирект: curl, цепочки и query string
На практике один корректный редирект выглядит так: curl -I https://site.ru/old-url/ → HTTP/1.1 301 → Location: https://site.ru/new-url/. Цепочка 301→301→200 дает ERR_TOO_MANY_REDIRECTS и теряет crawl budget. Объединяйте www+https в одном RewriteRule, не дублируйте правила в .htaccess и PHP.
- Выполните curl -I "https://example.ru/staryj-put/" и убедитесь в одном 301 и правильном Location.
- Для проверки цепочки: curl -I -L --max-redirs 3 "https://example.ru/staryj-put/" - не больше одного редиректа до финального 200.
- Проверьте URL с ?utm_source=test - query string должен сохраниться, если вы настраивали QSA.
- Откройте инструмент "Ответ сервера" в Яндекс Вебмастере и URL Inspection в Google Search Console.
- Убедитесь, что robots.txt и sitemap указывают на канонический https-домен - иначе робот увидит конфликт зеркал (см. robots.txt и sitemap на Битрикс).
Делайте: фиксируйте результат curl в таблице миграции. Не делайте: запускать "Переезд сайта" в Вебмастере, пока старые URL не отдают стабильный 301 на аналогичные новые.
Свяжите 301 с переездом в Вебмастере и GSC
Workflow: старый URL → один 301 → новый → "Переезд сайта" в Вебмастере (www/домен) → мониторинг в GSC. 301 - на аналогичные страницы, не на главную. В GSC свойство должно совпадать с каноническим https. Вопросы по аудиту - контакты mv-blog.ru.
Делайте: дождитесь стабильных 301, затем запускайте переезд. Не делайте: менять канонический домен в аналитике раньше, чем редиректы заработают на проде.
Автор: Максим Мольков, digital-стратег, автор mv.digital.
Источники: документация LocalRedirect, обработка адресов urlrewrite, переезд сайта в Яндекс Вебмастере, редиректы Google Search Central.
Частые вопросы
Что такое 301 редирект?
301 (Moved Permanently) - постоянное перенаправление: браузер и робот идут на новый URL, поисковик переносит сигналы со старой страницы. На 1С-Битрикс настраивается в .htaccess, модуле SEO или через LocalRedirect с явным статусом 301. Для временных акций берите 302.
Как проверить редирект на сайте?
В терминале выполните curl -I "https://ваш-сайт.ru/старый-путь/" и найдите строку HTTP/1.1 301 и заголовок Location. Для цепочки добавьте -L --max-redirs 3. Дублируйте проверку в "Ответ сервера" Яндекс Вебмастера и URL Inspection в Google Search Console.
Куда писать редирект битрикс htaccess?
В корневой .htaccess в блок #Редиректы - до стандартного rewrite Битрикс. Для пары путей на одном домене - Redirect 301 /старый/ /новый/. Для https, www и сохранения UTM - RewriteRule с [R=301,L,QSA]. Частные правила ставьте выше общих.
LocalRedirect или .htaccess - что выбрать?
.htaccess быстрее для глобальных правил (https, www, статические пары URL) - PHP еще не запущен. LocalRedirect нужен, когда адрес зависит от данных в базе. Помните: LocalRedirect по умолчанию отдает 302; для SEO передайте третий параметр '301 Moved Permanently'.
Почему ломается обмен 1С после https-редиректа?
Глобальное правило http→https перехватывает запрос к /bitrix/admin/1c_exchange.php. Добавьте в .htaccess исключение RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ [NC] перед правилом редиректа на https. После правки проверьте, что обмен получает 200, а не 301.
Нужен ли переезд в Вебмастере после настройки 301?
Да, для смены www/без www или домена после стабильных 301 запустите инструмент "Переезд сайта" в Яндекс Вебмастере. Редиректы должны вести на аналогичные страницы, не на главную. В GSC следите за отчетом "Страницы" и индексацией новых URL.
Больше практики по сайту на Битрикс - в разделе создание и разработка сайта на mv-blog.ru.