Sites web

Correction des avertissements de contenu mixte après l'activation de HTTPS

When SSL is active but the browser padlock is missing, broken or showing a warning, the cause is almost always mixed content: the page itself is encrypted but something on it is still being fetched…

Correction des avertissements de contenu mixte après l'activation du HTTPS

Quand SSL est actif mais que le cadenas du navigateur manque, est cassé ou affiche un avertissement, la cause est presque toujours le contenu mixte : la page elle-même est chiffrée mais quelque chose d'elle est toujours récupéré en HTTP simple. Ce guide explique pourquoi cela se produit, comment trouver chaque ressource problématique, et comment le corriger correctement plutôt que d'appliquer un correctif superficiel.

Qu'est-ce que le contenu mixte

Un navigateur ne considère une page comme sécurisée que si la page et tout ce qu'elle charge arrivent via HTTPS. Si une page HTTPS récupère une image, un script, une feuille de style, une police ou une iframe depuis une adresse http://, le navigateur le signale.

Les navigateurs divisent cela en deux catégories, et elles se comportent très différemment :

  • Contenu mixte actif : scripts, feuilles de style, iframes et XHR. Les navigateurs les bloquent complètement. Les mises en page s'effondrent, les curseurs s'arrêtent, les formulaires cessent de se soumettre. C'est le type destructeur.
  • Contenu mixte passif : images, audio et vidéo. Ceux-ci se chargent généralement toujours, mais le cadenas est dégradé ou supprimé.

Un site peut donc sembler complètement normal et perdre quand même son cadenas, ou sembler cassé sans erreur évidente dans la page elle-même.

Pourquoi cela se produit après l'activation du SSL

L'activation du SSL change la façon dont votre site est servi. Elle ne change pas ce qui est stocké à l'intérieur.

WordPress écrit des URL absolues dans la base de données, donc un site qui a fonctionné en HTTP pendant une période quelconque a des adresses http:// sauvegardées dans :

  • Le contenu des articles et pages, notamment chaque image insérée via l'éditeur.
  • Les enregistrements des pièces jointes multimédia.
  • Les paramètres du customiseur de thème et les options de thème.
  • Le contenu des widgets et les paramètres des blocs.
  • Les paramètres des plugins, particulièrement les constructeurs de pages et les plugins de curseur.
  • Les options siteurl et home.

Rien de cela ne se met à jour automatiquement. L'activation du SSL et la surprise de voir le cadenas cassé est l'une des questions de support les plus courantes, et c'est pour cette raison.

Étape 1 : Forcer le HTTPS au serveur

Avant de toucher à la base de données, assurez-vous que chaque visiteur accède d'abord au HTTPS.

  1. Connectez-vous à KPanel et cliquez sur Websites dans la barre latérale gauche.
  2. Cliquez sur votre site.
  3. Ouvrez Settings.
  4. Sous Behavior, activez Force HTTPS.
  5. Cliquez sur Save Changes.

Paramètre Force HTTPS sur un site dans KPanel

Chaque requête HTTP est maintenant redirigée vers HTTPS au serveur, avant que votre site ne s'exécute.

Force HTTPS traite les requêtes entrantes. Il ne réécrit pas les URL déjà stockées dans votre base de données, donc à lui seul il n'effacera pas un avertissement de contenu mixte causé par une image http:// codée en dur. Vous avez besoin de ceci ET de l'étape 2.

Si SSL n'est pas encore actif ou si le certificat semble incorrect, commencez par SSL Certificates.

Étape 2 : Réécrire les URL stockées

C'est le correctif qui résout réellement le contenu mixte.

  1. Ouvrez le site, puis l'onglet WordPress, puis la section Quick Actions.
  2. Trouvez la carte Search & Replace et cliquez sur Configure.
  3. Dans Find (old value) entrez http://yourdomain.co.nz.
  4. Dans Replace with entrez https://yourdomain.co.nz.
  5. Laissez Dry run (preview only, no changes) coché et cliquez sur Preview.
  6. Vérifiez le nombre et la répartition par tableau.
  7. Décochez Dry run, cliquez sur Run et confirmez.

Une sauvegarde complète est automatiquement créée avant le remplacement, et chaque tableau est couvert, y compris ceux créés par des plugins. Les paramètres de plugin sérialisés sont traités correctement.

Ne faites pas cela avec une requête SQL dans phpMyAdmin. WordPress stocke les paramètres du plugin et du thème sous forme de chaînes sérialisées qui enregistrent la longueur de chaque valeur, donc une REPLACE() brute les casse et les paramètres se réinitialisent silencieusement à vide. Il n'y a pas de réparation autre que la restauration d'une sauvegarde. L'explication complète est dans Running a Search and Replace.

Si votre plan inclut la console, la commande équivalente est :

search-replace 'http://yourdomain.co.nz' 'https://yourdomain.co.nz' --all-tables --dry-run

Supprimez --dry-run pour l'appliquer, et faites vous-même une sauvegarde d'abord : la console ne le fait pas.

Étape 3 : Effacer tous les caches

Une copie en cache d'une page continuera à servir les anciennes URL HTTP longtemps après la correction de la base de données, ce qui est pourquoi les gens pensent souvent que le remplacement n'a pas fonctionné.

  1. WordPress, puis Quick Actions, puis Flush Cache.
  2. WordPress, puis Caching, puis Purge cache, si le cache de la page entière est activé.
  3. Performance, puis Kapsule CDN, puis Purge, si le CDN est activé. Voir Purging the CDN Cache.
  4. N'importe quel plugin de cache, depuis son propre écran de paramètres.
  5. Votre propre navigateur. Testez dans une fenêtre privée pour ne pas être trompé par votre propre cache.

Étape 4 : Trouver ce qui reste

La plupart des sites sont propres après l'étape 2. Quand un avertissement persiste, trouvez la ressource exacte plutôt que de deviner.

Console du navigateur. Ouvrez les outils de développement avec F12, allez à l'onglet Console et rechargez. Le contenu mixte apparaît comme un avertissement explicite nommant l'URL complète de la ressource problématique. Cette URL vous indique quel plugin ou thème est responsable.

Onglet Network. Filtrez par http:// pour lister chaque requête non sécurisée que la page a faite.

Source de la page. Chargez la page, affichez la source et recherchez http://. Ignorez tout ce qui se trouve à l'intérieur des attributs xmlns et des déclarations de schéma : ce sont des identifiants, pas des requêtes.

Les survivants courants, et quoi faire pour chacun :

Ce que vous trouvezCorrectif
Une image ou un logo dans un paramètre du customiseur de thèmeTéléchargez-la à nouveau ou resélectionnez-la dans le customiseur
Un module de constructeur de pages avec une URL d'image http:// saisieModifiez ce module et corrigez l'URL
La table de paramètres propre d'un plugin de curseurResauvegardez le curseur, ou exécutez la recherche et le remplacement avec --all-tables
Une police ou un script d'un domaine tiersVérifiez si le fournisseur offre le HTTPS. La plupart le font maintenant. Changez l'URL
Un pixel de suivi ou un embed d'un ancien fournisseurSi le fournisseur n'a pas de HTTPS, supprimez-le. C'est une dépendance cassée, pas un problème de Kapsule
http:// codé en dur dans un fichier de modèle de thèmeModifiez le modèle, ou mieux, utilisez https ou une référence relative au protocole

Si exactement une page est affectée et le reste du site est propre, le coupable est le contenu de cette page, pas un paramètre à l'échelle du site. Ouvrez-le dans l'éditeur et regardez le multimédia qu'il intègre.

Confirmer que c'est résolu

  1. Chargez le site dans une fenêtre privée.
  2. Le cadenas devrait être solide, sans triangle d'avertissement et sans indication barrée.
  3. Cliquez sur le cadenas. Le navigateur rapporte la connexion comme sécurisée sans avis de contenu mixte.
  4. Ouvrez la console et rechargez une fois de plus. Zéro avertissement de contenu mixte.
  5. Vérifiez une page profonde, pas seulement la page d'accueil : une page intérieure, un article de blog avec des images, et le checkout sur une boutique.

Empêcher son retour

  • Laissez Force HTTPS activé. C'est un paramètre d'une ligne qui élimine une classe entière de problème.
  • Ne saisissez jamais une URL complète http:// dans le contenu. Utilisez la bibliothèque multimédia, qui stocke maintenant les adresses HTTPS.
  • Vérifiez les paramètres du plugin après l'installation de tout ce qui demande une URL.
  • Guettez un avertissement qui revient après une mise à jour du plugin. Certains plugins réinitialisent leurs propres URL stockées.
  • Réexécutez la recherche et le remplacement après toute migration, puisqu'une base de données importée apporte les URL de l'ancien hôte avec elle : Migrating a Website From cPanel.

Dépannage

Le cadenas est bien pour moi, cassé pour un collègue. Page en cache. Demandez-lui de recharger dans une fenêtre privée.

Le site s'est complètement cassé après le remplacement. Restaurez la sauvegarde automatique antérieure à l'exécution : Restoring From a Backup.

La console affiche un avertissement de contenu mixte sur un domaine qui n'est pas le mien. Une ressource tierce. Vous ne pouvez pas corriger leur serveur : soit ils supportent HTTPS et vous changez l'URL, soit vous supprimez la ressource.

Tout est HTTPS mais le site ne se charge pas du tout. Ce n'est pas du contenu mixte. Commencez par Website Not Loading et vérifiez le certificat sur SSL Certificates.

Si vous avez travaillé sur tout cela et l'avertissement persiste, envoyez un email à support@kapsulehost.com avec l'URL affectée et le texte exact de l'avertissement de la console du navigateur.

Vous avez besoin d'aide?

Envoyez-nous un email à support@kapsulehost.com ou ouvrez un chat dans KPanel.

Ouvrir KPanel