Avertissements de contenu mixte sur un site HTTPS
La page est arrivée sur HTTPS et a ensuite demandé quelque chose sur HTTP. Les navigateurs bloquent les parties actives et déposent le cadenas pour le reste.
Mixed Content: The page at 'https://example.com/' was loaded over HTTPS, but requested an insecure resource 'http://example.com/…'.
La console du navigateur donne le nom exact des URLs offenantes — commencer là, pas avec un plugin. La plupart d'entre eux sont des liens http:// absolus stockés dans le contenu post par un éditeur qui les a sauvegardés avant l'existence du certificat, et la correction durable est une recherche-replace dans la base de données plutôt qu'un filtre qui réécrit la sortie pour toujours.
Les causes les plus probables d’abord.
Parcourez la liste dans l’ordre. Vérifiez chaque cause avant de modifier quoi que ce soit : les correctifs diffèrent et une supposition coûte plus cher qu’une commande.
| Cause | Comment vérifier | Correctif |
|---|---|---|
| http:// URLs stockées dans le contenu post | Visualisez la source de la page et recherchez "http://" suivi de votre propre domaine. Les coups dans le balisage du corps de la poste sont des données stockées, pas la sortie de thème. | Lancez une recherche de base de données-remplacez-la dans les tables de contenu. Faites-le avec un outil qui comprend les données sérielles, car les valeurs widget et meta se brisent si la longueur de chaîne est éditée naïvement. |
| siteurl et la maison disent toujours http | Si l'un ou l'autre commence par http://, WordPress construit ses propres URLs d'actifs à partir de lui et chaque page hérite le problème. | Mettre à jour les deux options du formulaire https://. Tout ce que WordPress génère — scripts, styles, balises canoniques — est dérivé de ces deux valeurs. |
| WordPress ne peut pas dire qu'il est derrière TLS | is_ssl() retourne false sur un site qui est clairement desservi par HTTPS. C'est la signature d'un proxy inverse qui termine TLS en amont. | Faites confiance à l'en-tête du protocole transmis avant les chargements WordPress, ainsi is_ssl() répond correctement. Sans cela, WordPress continue à générer des liens http://, peu importe ce que dit la base de données. |
| Un actif tiers codé en dur | L'URL bloquée se trouve sur le domaine de quelqu'un d'autre — une police, un script, un lecteur intégré — avec un schéma explicite http://. | Changez-le en https:// dans le thème ou l'intégration. Si l'hôte distant n'a pas de certificat, l'actif doit être hébergé ou abandonné; il n'y a aucun moyen de le charger en toute sécurité. |
Corriger l’erreur, étape par étape.
Les commandes supposent un accès à WP-CLI et au terminal. Si vous n’en disposez pas, chaque étape explique comment procéder depuis le tableau de bord ou via SFTP.
Obtenez la liste depuis le navigateur, pas d'une estimation
Ouvrez la console sur une page défaillante. Chaque entrée de contenu mixte nomme la ressource, et le motif qui l'entoure identifie habituellement la source immédiatement.
Vérifiez ce que WordPress pense que sa propre adresse est
Ces deux options s'assoient sous tout le reste, donc elles valent la peine d'être confirmées avant de changer de contenu.
wp option get siteurl wp option get home
Réécrire les URL stockées en toute sécurité
La lecture du rapport est d'abord à sec. Sauter la colonne GUID est délibéré : c'est un identifiant, pas un lien, et le modifier renouvele les lecteurs de flux.
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid --dry-run wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid
Enseigner WordPress il est derrière TLS
Ajoutez ceci au-dessus de la ligne --stop éditant -- dans wp-config.php quand un proxy met fin au certificat.
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) { $_SERVER['HTTPS'] = 'on'; }Purge et revérification
Cached HTML détient les anciennes URLs. Effacez-le, puis rechargez-le avec la console ouverte et confirmez que la liste est vide.
wp cache flush
Ce que la plateforme prend en charge.
TLS se termine au proxy et le nginx du site passe le protocole transmis à PHP, ainsi is_ssl() est correct sans un wp-config.php edit et WordPress génère https:// liens à partir de la première demande. Les certificats sont émis et renouvelés automatiquement, ce qui supprime la situation cette erreur se développe généralement à partir d'un site qui a couru sur http pendant des mois et accumulé des liens absolus.
Questions fréquentes.
Puis-je simplement utiliser un plugin qui réécrit les URLs sur sortie ?
Pourquoi une seule image est cassée quand tout le reste va bien ?
Le cadenas est là, mais la console se plaint encore.
Dois-je rediriger http vers https aussi?
Si le problème vient d’ailleurs.
Ces erreurs peuvent se présenter de façon similaire dans le navigateur.