Настройка битрикс для перехода на HTTPS

Делаем настройку в 1С-Битрикс после перевода сайта на HTTPS

Очень часто после перевода сайта на HTTPS на платформе CMS 1С-Битрикс в его работе возникают ошибки.

Например при использовании стандартной функции LocalRedirect(), в которой в качестве параметра URL мы указываем ссылку относительно корня сайта (без указания протокола и домена), битрикс делает редирект вместо HTTPS на HTTP. Либо очень часто при работе с админкой, данные не сохраняются, это возникает потому что 1С-Битрикс делает запросы по протоколу HTTP. Либо периодически, по непонятным причинам выскакивает уведомление что сайт работает с ошибками, но когда мы запускаем Настройки->Инструмены->Проверка системы, то ошибок не видим.

Причина заключается в том что 1С-Битрикс не обладает информацией на каком протоколе работает сайт (наличии SSL-сертификата). Это связано с неверными настройками хостинга, из-за которых невозможно средствами PHP определить правильный протокол.

Я не стал тратить время на разбор ядра CMS 1С-Битрикс что бы найти все способы определения протокола работы сайта, поэтому опишу самое первое условие на проверку, он руководствуется информацией которая лежит в глобальной переменной $_SERVER, а точнее $_SERVER["SERVER_PORT"]

Если $_SERVER["SERVER_PORT"] == 443, то битрикс считает что сайт работает на HTTPS, если не 443, то он переходит к следующей проверке (которую я не стал разбирать, потому что достаточно первой).

Очень часто $_SERVER["SERVER_PORT"] == 80, хотя сайт работает на HTTPS. Мы конечно можем покопаться в настройках Nginx и Apache, что бы в переменную $_SERVER прилетали правильные данные. Кто то это сделает быстро, кто то потратит кучу времени и перероет весь интернет для этого, для кого то администрирование это темный лес, а у кого то вообще нет возможности вносить правки в конфиги настройки сервера. Поэтому опишу самый простой и самый быстрый способ перевода 1С-Битрикс на протокол HTTPS

Для этого открываем на редактирование файл "/bitrix/php_interface/dbconn.php" и прописываем в самом низу строчку:

<? $_SERVER["SERVER_PORT"] = "443"; ?>

Все, теперь 1С-Битрикс знает что сайт переведен на HTTPS.

Теги: 1С-Битрикс, HTTPS, Настройка