Редирект HTTP→HTTPS через .htaccess — базовая гигиена для Apache/BitrixVM/Beget. Ниже рабочий сниппет, разбор флагов, варианты за прокси/Cloudflare и частые ошибки, из‑за которых получается цикл или смешанный контент.
Базовый 301 в .htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteEngine On— включаетmod_rewrite.RewriteCond %{HTTPS} off— правило только для незашифрованного запроса.R=301— постоянный редирект (для SEO лучше, чем 302, когда HTTPS уже основной канонический адрес).L— не применять следующие rewrite-правила к этому запросу.
Файл кладётся в корень сайта (для Битрикс — обычно рядом с /bitrix и index.php). Порядок важен: редирект на HTTPS должен стоять до «красивых URL», которые уже предполагают конечный хост.
Сайт за reverse-proxy / Load Balancer
Если TLS терминируется на балансировщике, бэкенд часто видит обычный HTTP. Тогда %{HTTPS} off всегда истинно и вы ловите цикл. Смотрите заголовок от прокси:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
На BitrixVM/nginx+Apache схема может отличаться: иногда HTTPS-редирект делают на nginx, а в .htaccess его дублировать не нужно. Один слой редиректа — меньше сюрпризов.
www и HTTPS одним проходом
Два последовательных редиректа (сначала https, потом www) ухудшают TTFB и размывают сигналы. Лучше сразу на канонический хост:
RewriteEngine On
# http://example.ru и http://www.example.ru → https://example.ru
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.ru$ [NC]
RewriteRule ^ https://example.ru%{REQUEST_URI} [L,R=301]
Битрикс: HTTPS в настройках
Мало поставить редирект. В настройках главного модуля / сайта включите HTTPS, проверьте https:// в шаблонах писем и в SITE_SERVER_NAME. Иначе агенты и почтовые ссылки продолжат генерировать http://, а браузер будет ругаться на смешанный контент.
Проверка
curl -I http://example.ru/
# ждём HTTP/1.1 301 и Location: https://example.ru/
curl -I https://example.ru/
# ждём 200 (или ваш обычный ответ), без нового редиректа на себя
В DevTools → Security убедитесь, что сертификат валиден и нет mixed content (картинки/скрипты по http).
Типичные ошибки
- Редирект за прокси по
%{HTTPS}→ бесконечный цикл. - Цепочка http→https→www→без www — лишние 301.
- Сертификат только на www, а редирект ведёт на apex (или наоборот).
- В кеше CDN/браузера залип старый 301 — после смены правила чистите кеш края.
Вывод
Для прямого Apache достаточно проверки %{HTTPS} и одного 301 на канонический https-хост. За прокси ориентируйтесь на X-Forwarded-Proto и не дублируйте редирект на каждом слое. В Битрикс дополнительно выровняйте настройки сайта и шаблоны ссылок — иначе .htaccess чинит только входной URL, а не все генерации внутри CMS.
