Карта в 1С-Битрикс работает по HTTP, но не по HTTPS
Почему после перехода на HTTPS в 1С-Битрикс перестают загружаться Яндекс Карты и другие скрипты и как явно включить https_request в .settings.php.
Правки в .settings.php и init.php вносите через SSH или FTP и сделайте копию файла: ошибка в нём останавливает весь сайт, а через админку её не исправить.
Причина
Битрикс определяет, открыт ли сайт по HTTPS, методом CMain::IsHTTPS(). Когда SSL обрабатывает прокси (nginx в «Веб-окружении», балансировщик хостинга, Cloudflare), до PHP запрос доходит по HTTP. Битрикс решает, что сайт работает без шифрования, и подключает скрипты карт по http:// — браузер блокирует их как смешанное содержимое.
Решение
Явно укажите в /bitrix/.settings.php, что сайт работает по HTTPS. Добавьте секцию перед последней закрывающей скобкой массива:
'https_request' => [
'value' => true,
],
После этого карты и другие подключаемые ресурсы загружаются по https://.
Проверка
Откройте страницу с картой, нажмите F12 и посмотрите вкладку «Консоль»: ошибок «Mixed Content» быть не должно.
Альтернатива на уровне сервера
Если прокси передаёт заголовок X-Forwarded-Proto: https, в nginx перед проксированием можно выставить переменную HTTPS on для PHP — тогда Битрикс определит протокол сам, и правка .settings.php не нужна.