Что такое Mixed Content
Смешанный контент (Mixed Content) – ошибка, возникающая, когда при открытии страницы по HTTPS часть контента загружается по небезопасному протоколу. Подобные страницы считаются потенциально небезопасными, поскольку ресурсы, отправленные без шифрования, могут быть просмотрены и/или изменены злоумышленниками.
Во избежание подмены контента современные браузеры либо автоматически изменяют протокол с HTTP на HTTPS, где это возможно, либо блокируют небезопасную часть запросов, что может приводить к некорректно отображающимся страницам сайта. Тогда разработчик в консоли может видеть надпись “This request has been blocked”. Mixed Content также отражается в разных браузерах по-разному – например, Google Chrome пишет, что подключение защищено не полностью, а Internet Explorer отображает только часть сайта, загруженную по HTTPS.
Как определить Mixed Content на сайте
Определить наличие Mixed Content на сайте можно по следующим признакам:
- В некоторых браузерах будет отображаться иконка частично небезопасного соединения:

- В инструментах разработчика (Ctrl+Shift+I) в разделе «Консоль» будут наблюдаться ошибки Mixed Content:

В сообщении об ошибке будет указано, к какому ресурсу происходило обращение по HTTP, а также действие браузера. Браузер либо переотправит запрос с протоколом HTTPS, либо из-за Mixed Content соединение будет заблокировано.
Как исправить ошибку Mixed Content
WordPress
Для исправления Mixed Content нужно поменять протокол на HTTPS с HTTP, скорректировав ссылки в БД сайта с помощью утилиты WordPress. Подключитесь к серверу по SSH или используйте веб-терминал. Перейдите в директорию вашего сайта командой cd:
cd ~/site_dir/public_htmlВыполните замену ссылок командой wp. Для сайта на домене example.com команда будет выглядеть следующим образом:
wp search-replace 'http://example.com' 'https://example.com'Если на сайте используется плагин Elementor, рекомендуется также скорректировать его ссылки:
wp elementor replace-urls 'http://example.com' 'https://example.com'После чего очистите кэш командой:
wp cache flushИ проверьте работу сайта.
Bitrix
Для корректной работы сайта на Bitrix необходимо:
- Скорректировать пути в ссылках вида
http://_ваш_сайт/bitrix/admin/***с абсолютных на относительные – для этого уберите из ссылок упоминание протокола и домена, приведя их к виду/bitrix/admin/***. Для поиска подобных ссылок можно воспользоваться инструментом поиска в менеджере файлов Битрикса:

- Скорректировать ссылки на медиаконтент, изменив HTTP на HTTPS в кастомизированных компонентах, если они есть. Если подобные ссылки присутствуют в сторонних модулях, рекомендуем обратиться в поддержку модуля.
- Если в коде сайта подключаются сторонние скрипты, например, счетчики или виджеты, ссылки на них также необходимо скорректировать с абсолютных на относительные.
Joomla
В первую очередь необходимо убедиться, что сайт корректно настроен на работу по протоколу HTTPS. Для этого авторизуйтесь в панели администрирования сайта, затем нажмите «Система» – «Общие настройки». Проверьте, что во вкладке «Сервер» в меню «Включить SSL» указано «Весь сайт».

Также убедитесь, что для сайта включена переадресация на HTTPS – включить ее можно либо в разделе «Сайты» в панели управления, либо с помощью следующего правила в файле .htaccess:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L].htaccess нужные настройки будут работать только для динамических данных.Если вы используете такие компоненты, как VirtueMart, вам может потребоваться также включить работу по HTTPS в настройках самого модуля. Для VirtueMart это можно сделать в разделе «Компоненты» – «VirtueMart» – «Настройки» – «Магазин», включив опцию «Включить SSL для важных частей сайта».
Также вы можете добавить следующее правило в файл .htaccess:
Header always set Content-Security-Policy: upgrade-insecure-requestsЭто правило устанавливает заголовок, сообщающий браузерам о необходимости изменения протокола запроса с HTTP на HTTPS. Mixed Content всё еще наблюдается? Тогда скорректируйте ссылки, вызывающие ошибку, вручную. Увидеть элементы, загружаемые по HTTP, вы можете в консоли браузера.
OpenCart
В первую очередь нужно убедиться, что сайт корректно настроен на работу по протоколу HTTPS. Для корректной работы OpenCart по HTTPS нужно проверить и при необходимости отредактировать конфигурационные файлы сайта config.php. Сделать это можно, например, с помощью файлового менеджера. Перейдите в корневую директорию сайта. В разделе «Сайты» откройте меню настроек, нажмите «Перейти к файлам сайта» и перейдите в директорию public_html.
Откройте файл config.php и воспользуйтесь инструментом поиска и замены для изменения протокола с http на https:

Аналогичные правки нужно внести и в файле admin/config.php.
Обычно изменения этих настроек достаточно для корректной работы сайта по https, однако если смешанный контент на вашем сайте всё еще наблюдается, откройте меню «Система» – «Настройки» в панели администрирования сайта. Кликните «Редактировать» напротив используемого магазина.

Перейдите во вкладку «Сервер» и включите опцию «Использовать SSL».

Затем сохраните настройки.
Если после применения настроек и очистки кэша браузера на сайте всё еще наблюдается смешанное содержимое, вероятно, потребуется исправить ссылки вручную. Увидеть ссылки, которые необходимо скорректировать, можно в консоли разработчика. Также вы можете добавить следующее правило в файл .htaccess:
Header always set Content-Security-Policy: upgrade-insecure-requestsЭто правило устанавливает заголовок, сообщающий браузерам о необходимости изменения протокола запроса с HTTP на HTTPS.
Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел «Помощь и поддержка»). А если вы захотите обсудить эту статью, наши продукты или свой проект с коллегами по цеху и сотрудниками Бегета – ждем вас в нашем сообществе в Telegram.