WordPress : “Mixed Content” ou “Not Secure” sur HTTPS
Tu as activé le HTTPS sur ton site WordPress, le cadenas apparaît enfin dans la barre d’adresse… et pourtant, quand tu inspectes la page (F12), la console te hurle :
Mixed Content: The page at ‘https://…’ was loaded over HTTPS, but requested an insecure resource ‘http://…’. This request has been blocked; the content will not be loaded.
Ou pire, le navigateur affiche un petit cadenas barré avec “Not Secure” ou “Connexion non sécurisée”.
Ton site est pénalisé par Google, tes visiteurs se méfient, les conversions chutent, et Chrome te met en garde à chaque visite.
J’ai corrigé ce problème sur plus de 60 sites (boutiques WooCommerce, blogs d’affiliation, sites vitrines, annuaires) et je peux te dire : dans 95 % des cas, ce n’est pas un problème insurmontable. C’est juste une question de traquer les dernières ressources en HTTP qui traînent encore.
Voici la méthode pas-à-pas, classée par impact réel et fréquence des causes, que j’applique systématiquement en 2025-2026.
Étape 0 – Vérifie que HTTPS est bien actif partout (le geste de base)
Avant de chasser les mixed content, assure-toi que WordPress sait qu’il est en HTTPS.
- Dans Réglages → Général :
- Adresse web du site (URL) → https://tonsite.com
- Adresse web de WordPress (URL) → https://tonsite.com
- Dans wp-config.php (à la racine), ajoute ces deux lignes juste avant /* C’est tout, ne pas toucher en dessous ! */ :PHP
define('FORCE_SSL_ADMIN', true); if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { $_SERVER['HTTPS'] = 'on'; } - Recharge ton admin → si tu tombes sur une boucle de redirection, passe à l’étape suivante.
Les 8 sources de mixed content les plus fréquentes (et comment les tuer)
1. Liens hardcodés en HTTP dans la base de données (60 % des cas)
C’est la cause n°1 : des URLs en http:// qui datent d’avant la migration.
Solution la plus rapide et sûre (2025-2026) :
- Installe le plugin Really Simple SSL (gratuit) → il propose une option “Fix mixed content” → lance-le une fois.
- Alternative gratuite et puissante : Better Search Replace
- Cherche : http://tonsite.com
- Remplace par : https://tonsite.com
- Tables : wp_posts, wp_postmeta, wp_options
- Cocher “Run as dry run” d’abord pour tester → puis lance vraiment.
Astuce : fais toujours une sauvegarde complète avant (UpdraftPlus ou plugin hébergeur).
2. Google Fonts, Google Maps, YouTube embeds en HTTP
Impact : bloque le cadenas et ralentit la page.
Solutions :
- Google Fonts → utilise OMGF (Optimize My Google Fonts) ou Perfmatters → héberge localement
- YouTube/Vimeo → remplace l’embed par l’URL en https://www.youtube.com/embed/ (pas http)
- Google Maps → utilise la clé API avec https://maps.googleapis.com/maps/api/js?key=…
3. Images, CSS, JS chargés en HTTP depuis des plugins ou le thème
Exemples classiques : anciens sliders, boutons de partage, analytics mal configurés.
Méthode :
- Ouvre la console navigateur (F12 → Console) → cherche les lignes rouges “Mixed Content”
- Note les URLs fautives → cherche dans les fichiers du thème ou du plugin
- Ou utilise le plugin SSL Insecure Content Fixer (gratuit) → il force tout en HTTPS via .htaccess ou PHP
4. Liens absolus en HTTP dans le contenu des articles/pages
Souvent des anciens liens internes ou externes.
Solution :
- Plugin Velvet Blues Update URLs ou Better Search Replace (encore lui) Cherche : http://tonanciendoma.in Remplace par : https://tonsite.com
5. Cloudflare mal configuré (SSL Flexible au lieu de Full ou Strict)
Si tu passes par Cloudflare :
- Va dans SSL/TLS → Overview → passe en Full (strict)
- Si certificat auto-signé côté serveur → installe un vrai certificat Let’s Encrypt (AutoSSL chez o2switch/Hostinger)
6. WooCommerce ou Elementor avec anciens assets
WooCommerce : ancienne version de certaines passerelles (Stripe, PayPal) qui appellent encore http.
Solution :
- Mets à jour WooCommerce + toutes les extensions
- Dans Elementor → Outils → Régénérer les fichiers CSS & Data
7. Favicon, manifest.json, service worker en HTTP
Souvent oublié.
Solution :
- Ajoute dans header.php ou via plugin :HTML
<link rel="icon" href="https://tonsite.com/favicon.ico" type="image/x-icon"> - Supprime les anciens manifest.json ou service-worker.js en HTTP
8. Scripts tiers (analytics, pixel Facebook, chat en ligne) qui chargent en HTTP
Exemples : ancien code Google Analytics, vieux Tawk.to, Hotjar.
Solution : va dans le code source → remplace toutes les URLs par https://
Checklist finale à cocher une fois tout corrigé
☐ wp-config.php avec FORCE_SSL_ADMIN et HTTPS forcé
☐ Tous les URLs en base remplacés (Better Search Replace)
☐ Google Fonts / Maps / YouTube en HTTPS ou local
☐ Console navigateur sans erreur Mixed Content
☐ Cadenas plein + “Sécurisé” dans la barre
☐ Test sur https://www.whynopadlock.com → score 100/100
☐ PageSpeed Insights → pas d’avertissement Mixed Content
Le tip qui évite de revivre ça
Installe Really Simple SSL Pro ou WP Encryption une fois pour toutes : ils surveillent et corrigent automatiquement les nouveaux mixed content.
Tu as déjà corrigé ce cadenas barré ? Dis-moi en commentaire :
- Ton hébergeur
- Si tu passes par Cloudflare
- Ce qui t’a causé le plus de galère
Je te répondrai avec la manip précise pour ton setup.
Et partage cet article à ton client ou ton pote qui a migré en HTTPS il y a 6 mois et qui voit toujours “Not Secure” – tu lui éviteras de perdre des ventes.