Как сделать переадресацию на https

Определить в каком окружении запущен сайт и по какому протоколу к нему обратились можно на основе переменных окружения %ENV.

Обратите внимание! На разных хостингах эти переменные отличаются.

На нашем хостинге переменная окружения HTTP:HTTPS содержит on, если обращение к сайту произошло про протоколу https.

Определение на основе других переменных (в том числе на основе %{HTTPS} и %{SERVER_PORT} ) работать не будет.

Для переадресации на https необходимо добавить в самое начало (это важно!) файла .htaccess следующие строчки.

RewriteEngine on
RewriteCond %{HTTP:HTTPS}  !on
RewriteCond %{REQUEST_URI} !robots.txt
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

Эти строчки нужно добавить до всех остальных правил mod_rewrite, лучше всего - в самом начале файла. Если вы добавите их после других правил - всё может работать не так, как вы ожидаете.

Файл .htaccess находится в корне вашего сайта. Если вы редактируете файлы по ftp - может потребоваться включить “показывать скрытые файлы” в настройках вашего Ftp клиента.

Важно! Перед настройкой переадресации необходимо включить https. Это делается в контрольной панели - нужно кликнуть на сайт - https - “включить” и ввести корректные сертификаты или переключить на бесплатные сертификаты Let’s Encrypt. После этого нужно подождать пару минут, пока обновятся конфиграционные файлы на сервере.

Синхронизация с 1С

Если вы используете 1С для синхронизации с вашим сайтом и у вас обновлённая 1С (версия новее 8.3.9) - дополнительных настроек не требуется.

При использовании 1С до 8.3.9 могут возникать ошибки авторизации при синхронизации 1С с сайтом. Это связано с тем, что в старых версиях 1С нет полноценной поддержки TLS 1.2. В этом случае синхронизация будет работать только по протоколу http.

Протокол TLS 1.2 используется при подключении по https для обеспечения безопасности (TLS 1.1 и ниже подвержены уязвимостям) и для получения оценки А и выше от SSL Labs. Включить поддержку более старых протоколов нельзя - это может приводить к понижению рейтинга сайта в поисковых системах и другим негативным последствиям.

Чтобы синхронизация с 1С работала по http одновременно с переадреацией на https для обычных посетителей сайта - необходимо добавить исключение для 1С в правила переадресации.

Полностью набор правил для Битрикса будет выглядеть так:

RewriteEngine on
RewriteCond %{HTTP:HTTPS}  !on
RewriteCond %{REQUEST_URI} !robots.txt
RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ [NC]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
Тэги: htaccess, mod_rewrite, dev, ssl, 1c