Как сделать переадресацию на 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]