Mixed content возникает, когда HTTPS-страница загружает ресурсы (картинки, скрипты, стили) по HTTP. Браузер считает это небезопасным и блокирует или предупреждает пользователя.
Типы mixed content
| Тип | Что включает | Действие браузера |
|---|---|---|
| Active Mixed Content | JS, CSS, iframes | Блокирует автоматически |
| Passive Mixed Content | Картинки, аудио, видео | Показывает предупреждение |
Как найти mixed content
Chrome DevTools
F12 → Console
Ищите: "Mixed Content: The page ... was loaded over HTTPS"
Или: "blocked:mixed-content" в Network
Онлайн-инструменты
- Why No Padlock — whynopadlock.com
- SSL Checker — ssllabs.com
Исправление в WordPress
Метод 1: Плагин Really Simple SSL
Установите плагин Really Simple SSL — он автоматически заменяет HTTP на HTTPS в контенте и настройках.
Метод 2: wp-config.php
define('FORCE_SSL_ADMIN', true);
$_SERVER['HTTPS'] = 'on';
Метод 3: WP-CLI
wp search-replace 'http://example.com' 'https://example.com' --all-tables --dry-run
# Убедитесь что всё правильно, затем:
wp search-replace 'http://example.com' 'https://example.com' --all-tables
Исправление через .htaccess
# Редиректить весь HTTP на HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Upgrade-Insecure-Requests заголовок
Header always set Content-Security-Policy "upgrade-insecure-requests"
✅ Заголовок
upgrade-insecure-requests — самый быстрый способ исправить passive mixed content без изменения контента.⚠️ После замены URL сделайте бэкап БД. Проверьте работу форм, AJAX и внешних интеграций — они могут иметь захардкоженные HTTP-ссылки.