Что значит mixed content
Справка MDN делит ресурсы на два вида:
- Улучшаемые (картинки, аудио, видео). Современные браузеры сами меняют
http://наhttps://. Исключение: если адрес указан как IP-адрес, ресурс блокируется. - Блокируемые (скрипты, стили, iframe, шрифты, запросы
fetchиXMLHttpRequest). Браузер не загружает их совсем.
Поэтому симптом бывает разный: пропали стили и страница «рассыпалась», не работает меню или форма, не показывается карта или виджет.
Шаг 1. Найдите проблемные адреса
- Откройте страницу, нажмите F12 и перейдите на вкладку «Консоль».
- Обновите страницу. Ищите записи со словами «Mixed Content»: в них указан тип ресурса и адрес
http://.... - Повторите для главной, страницы записи, каталога и страницы с формой: ссылки в шаблонах и в содержимом разные.
Второй способ: «Просмотр кода страницы» и поиск по http://. Ссылки на другие сайты (<a href>) проблемой не являются, смотрите только src, href у <link>, url() в стилях и iframe.
Не хотите разбираться сами? Пришлём оценку в часах до начала работы, первая задача до 2 часов бесплатно.
Отправить задачуШаг 2. Определите, где хранится адрес
| Адрес в консоли | Где искать |
|---|---|
Ваш домен, путь /wp-content/uploads/... | Содержимое записей в базе, настройки темы, виджеты |
Ваш домен, путь /wp-content/themes/... или /local/templates/... | Файлы шаблона: жёстко прописанный http:// |
| Чужой домен (шрифты, счётчики, виджеты, карта) | Код подключения: заменить на https://, а если сервис не поддерживает HTTPS, заменить сервис |
| Тот же ресурс, но с IP-адресом | Замените IP на имя домена |
Шаг 3. Исправьте адреса
Сделайте копию файлов и базы до замены.
WordPress
- В «Настройки → Общие» поля «Адрес WordPress (URL)» и «Адрес сайта (URL)» должны начинаться с
https://(документация WordPress). После смены проверьте, что нет петли редиректов. - Замените адреса в базе. WP-CLI понимает сериализованные данные, которые простая замена в SQL ломает (WP-CLI search-replace). Сначала пробный запуск без записи:
wp search-replace 'http://example.ru' 'https://example.ru' --skip-columns=guid --dry-runРезультат совпал с ожидаемым, повторите без --dry-run. Столбец guid не меняют: по документации WordPress его содержимое трогать нельзя ни при каких обстоятельствах.
- Проверьте файлы темы и плагинов:
grep -rn "http://example.ru" wp-content/themes wp-content/plugins. - Конструкторы страниц и плагины кеша хранят стили и копии страниц отдельно. После замены очистите их кеш и пересоздайте файлы стилей.
1С-Битрикс
Ссылки хранятся в трёх местах: в файлах шаблона сайта (local/templates/ или bitrix/templates/), в файлах страниц публичной части и в содержимом инфоблоков. Найдите файлы: grep -rn "http://example.ru" local/ bitrix/templates/ --include=*.php. Содержимое инфоблоков меняйте в админке или запросом после копии базы. Не заменяйте http:// по всей базе вслепую: часть данных хранится в сериализованном виде.
Внешние сервисы
Откройте адрес сервиса по https:// вручную. Если ответа нет или предупреждение о сертификате, сервис не поддерживает HTTPS: выберите другой или уберите блок.
Шаг 4. Временная мера: заголовок upgrade-insecure-requests
Директива заставляет браузер подменять http:// на https:// у всех подзапросов страницы до отправки (MDN). Пример для nginx:
add_header Content-Security-Policy "upgrade-insecure-requests" always;Ограничения: если ресурс по HTTPS недоступен, запрос просто упадёт, без возврата на HTTP. Заголовок не меняет переходы по ссылкам на чужие сайты. Он прикрывает проблему, но не исправляет её: адреса в базе и шаблонах всё равно нужно заменить.
Шаг 5. Проверка
- Консоль на ключевых страницах без записей «Mixed Content».
- Страница выглядит как раньше: стили, шрифты, формы, карта.
- Поиск по коду страницы не находит
http://уsrcи в стилях. - В файле
robots.txt, карте сайта и разметке canonical адреса начинаются сhttps://, и https-версия сайта добавлена в Яндекс Вебмастер и Search Console.
Когда нужен специалист
- Адреса зашиты в тему или плагин, который вы не разрабатывали.
- Сайт на Битриксе с большим числом инфоблоков.
- Замена в базе затронула сериализованные данные, и что-то сломалось.
- Нет резервной копии и нет уверенности в замене.
- После перехода на HTTPS пропали позиции и нужно проверить редиректы и индексацию.
Сколько стоит решение у нас
| Задача | Время | Стоимость |
|---|---|---|
| Исправление ошибки | 1–2 ч | 3 800–7 600 ₽ |
| Настройка защиты | 1–2 ч | 3 800–7 600 ₽ |
| Перенос сайта | 2–4 ч | 7 600–15 200 ₽ |
Диапазоны ориентировочные, ставка 3 800 ₽ в час. Точную оценку присылаем до начала работ. Все цены.
Опишите проблему в форме. Пришлём оценку в часах до начала работы, первая задача до 2 часов бесплатно для новых клиентов.
Отправить задачуЧастые вопросы
Почему сертификат есть, а замок не показывается?
Сертификат проверяет соединение, но не содержимое. Если часть ресурсов идёт по HTTP, браузер сообщает о небезопасном содержимом. Закройте проблему по шагам 1 и 3, и сообщение исчезнет.
Достаточно ли поставить плагин, который «чинит HTTPS»?
Плагины подменяют адреса на лету при выводе страницы. Это удобно как временная мера, но замена в базе надёжнее: нет лишней нагрузки на каждый запрос, и результат не зависит от плагина.
Нужен ли HSTS?
Заголовок Strict-Transport-Security заставляет браузер заходить на сайт только по HTTPS. Включайте его, когда HTTPS стабильно работает на основном домене и поддоменах, иначе браузеры будут отказывать в доступе к частям, где HTTPS ещё не настроен.
Это влияет на поиск?
Если страница открывается по HTTPS, но выглядит поломанной, пользователи уходят. Для поисковых систем важно, чтобы https-версия страницы была основной: редирект с HTTP, canonical, карта сайта на https.