Карта в 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 не нужна.

Все статьи

Расскажите о задаче — подберём платформу и оценим работу

Обсудить проект