Почему редирект с HTTP работает, а с HTTPS нет в BitrixVM
Ситуация, когда 301 редирект отрабатывает только для протокола HTTP, но игнорируется на HTTPS, часто встречается на сайтах под управлением BitrixVM. В этой статье объясняем причины такого поведения и даём пошаговое решение.
Как работает обработка редиректов в BitrixVM
BitrixVM - это предварительно настроенный образ виртуальной машины для 1С-Битрикс. Он использует связку Nginx + Apache. Nginx выступает в роли фронтенд-сервера и принимает все входящие запросы, включая HTTPS. Затем он проксирует их на Apache, который обрабатывает .htaccess.
Если редирект работает только по HTTP, а по HTTPS нет, проблема почти всегда кроется в конфигурации Nginx, а не в самом .htaccess.
Основные причины неработающего редиректа на HTTPS
1. Редирект на HTTPS настроен в Nginx раньше, чем обрабатывается .htaccess
В стандартной конфигурации BitrixVM в файле /etc/nginx/bx/site_settings/имя_сайта.ssl.conf (или в основном конфиге) может быть строка, которая принудительно перенаправляет все HTTP-запросы на HTTPS. После этого Nginx отдаёт уже HTTPS-версию страницы, и Apache получает запрос уже по HTTPS. Если в .htaccess редирект написан без учёта схемы (например, только на HTTP), он может не сработать.
2. Редирект в .htaccess не учитывает протокол HTTPS
Ваше правило RewriteRule ^catalog/old-product/$ https://site.ru/catalog/product/ [R=301,L] явно указывает целевой URL с HTTPS. Но если Apache получает запрос уже по HTTPS, редирект может не выполниться из-за того, что Nginx уже обработал запрос и не передаёт его обратно в Apache для повторной обработки.
3. Кеширование конфигурации Nginx
Иногда после правок .htaccess или конфигов Nginx требуется перезагрузка сервера: systemctl reload nginx или bx-restart. Без этого старые правила остаются в памяти.
Как исправить: пошаговая инструкция
- Проверьте конфигурацию Nginx. Откройте файл
/etc/nginx/bx/site_settings/имя_сайта.ssl.confи найдите блок server для порта 443. Убедитесь, что там нет лишних rewrite-правил, которые мешают. - Перенесите редиректы из .htaccess в конфиг Nginx. Для надёжности лучше добавлять 301 редиректы прямо в секцию server для HTTPS в Nginx. Пример:
rewrite ^/catalog/old-product/$ https://site.ru/catalog/product/ permanent; - Перезагрузите Nginx. Выполните команду
bx-restartилиsystemctl reload nginx. - Проверьте настройки HTTPS в BitrixVM. Убедитесь, что в настройках сайта в административной панели Битрикс правильно указан протокол (HTTPS) и не включено принудительное перенаправление через PHP.
- Отключите ненужные редиректы в .htaccess. Если редиректы уже есть в Nginx, удалите их из .htaccess, чтобы избежать конфликтов.
Дополнительные советы по SEO
При настройке редиректов важно использовать код 301 (постоянный), чтобы поисковые системы корректно передали вес старой страницы новой. Избегайте цепочек редиректов - это замедляет загрузку и может снизить позиции в выдаче. После внесения изменений проверьте результат через консоль браузера или сервисы типа Redirect Checker.
Если после всех шагов редирект всё ещё не работает, проверьте логи Nginx: tail -f /var/log/nginx/access.log. Там будет видно, как обрабатывается запрос.