Сайт перешёл на HTTPS, сертификат в порядке, но браузер всё равно показывает "Соединение не защищено" или значок предупреждения вместо зелёного замка. Разберём, откуда берётся смешанный контент на сайтах 1С-Битрикс и как его системно найти и вычистить, а не чинить по одной странице за раз.
Что такое смешанный контент
Смешанный контент — это ситуация, когда HTTPS-страница загружает
ресурсы (изображения, скрипты, стили, iframe) по незащищённому
протоколу http://. Браузер по-разному реагирует
на разные типы такого контента: пассивный смешанный контент
(изображения) обычно просто помечается предупреждением, активный
(скрипты, стили) может быть заблокирован браузером полностью,
ломая функциональность страницы.
Источник №1: абсолютные ссылки в старом контенте
Материалы, залитые до перехода сайта на HTTPS, часто содержат
жёстко прописанные абсолютные ссылки вида
http://example.ru/upload/image.jpg внутри самого
HTML-контента статей или карточек товаров — это остаётся так
до тех пор, пока не будет исправлено вручную или массовой заменой
в базе.
Нужна помощь с Битрикс?
Массовый поиск и замена в базе данных
-- поиск затронутых записей перед заменой
SELECT ID, DETAIL_TEXT FROM b_iblock_element
WHERE DETAIL_TEXT LIKE '%http://example.ru%';
-- замена (после обязательного бэкапа!)
UPDATE b_iblock_element
SET DETAIL_TEXT = REPLACE(DETAIL_TEXT, 'http://example.ru', 'https://example.ru')
WHERE DETAIL_TEXT LIKE '%http://example.ru%';
Прямой SQL-запрос массовой замены — быстрый способ вычистить старые ссылки, но требует обязательной резервной копии перед выполнением и точного понимания, в каких именно полях и таблицах может встречаться проблема, — детальный текст элементов инфоблока далеко не единственное место, где могут быть жёстко прописанные адреса.
Источник №2: сторонние виджеты и скрипты
Встроенные виджеты — онлайн-чат, счётчики аналитики, виджеты
соцсетей — иногда подключаются кодом, скопированным из документации
сервиса с жёстко прописанным http://, особенно если
код был получен и вставлен давно. Такие подключения стоит проверить
отдельно, поскольку они обычно находятся не в контенте статей,
а в коде шаблона или отдельных инклюдах.
Протокол-независимые ссылки
Вместо жёсткого указания https:// в местах, где
ресурс может обслуживаться как по HTTP, так и по HTTPS (что сейчас
редкость, но исторически было распространённым решением),
использовалась протокол-независимая запись
//example.ru/style.css, которая наследует протокол
текущей страницы. Сегодня для собственного контента практичнее
просто использовать явный https:// напрямую, поскольку
весь трафик и так идёт по защищённому протоколу.
Инструмент DevTools для точечной диагностики
Вкладка Console в инструментах разработчика браузера (F12) прямо показывает список заблокированных или предупреждающих запросов смешанного контента с указанием конкретного URL — для точечной проверки одной страницы это быстрее, чем искать вслепую по всей базе данных.
CSP-заголовок upgrade-insecure-requests
# в конфигурации веб-сервера или через meta-тег
Content-Security-Policy: upgrade-insecure-requests
Этот заголовок указывает браузеру автоматически повышать все
запросы http:// на странице до https://,
не дожидаясь ручной чистки каждой ссылки, — удобная временная
мера на период, пока идёт системная чистка контента, но не замена
самой чистки, поскольку часть ресурсов на удалённых серверах может
быть недоступна по HTTPS вовсе.
Регулярная проверка после каждого крупного импорта контента
Массовый импорт контента (из 1С, из старой CMS, из внешнего фида) — регулярный источник новых жёстко прописанных HTTP-ссылок, если источник данных сам исторически использовал HTTP. Стоит включить проверку на смешанный контент в регулярный процесс после крупных импортов, а не считать проблему решённой раз и навсегда после единственной чистки.
Частые ошибки
- Чистка выполняется вручную по одной странице. Не масштабируется на сайт с сотнями и тысячами материалов.
- Массовая замена в базе без резервной копии. Ошибка в запросе может повредить контент без возможности отката.
- Проверены только статьи, но не сторонние виджеты в шаблоне. Часть смешанного контента остаётся необнаруженной.
- Новый импорт контента не проверяется на HTTP-ссылки. Проблема появляется заново после каждой крупной загрузки данных.
Итог
Смешанный контент на HTTPS-сайте почти всегда родом из старого
контента, залитого до перехода на защищённый протокол, или из
сторонних виджетов с устаревшим кодом подключения. Массовая замена
в базе данных с обязательным бэкапом решает основную часть проблемы
быстрее ручной правки, а заголовок upgrade-insecure-requests
можно использовать как временную страховку на период системной
чистки.
