Un certificat couvre tout le site : un cadenas qui disparaît sur une seule page n'est donc jamais le certificat. Cette page charge au moins une chose en http tout nu, et c'est pour cela que le navigateur déclasse l'indicateur.

Le trouver en un seul endroit

Ouvrez la console sur cette page. L'avertissement de contenu mixte nomme l'URL exacte. C'est tout le diagnostic - le reste consiste à décider d'où vient cette URL.

Ou le trouver depuis le serveur

curl -sS https://yourdomain.com/that-page | grep -oE 'http://[^"[:space:]]+' | sort -u | head -20

D'où cela vient d'habitude

  • Une image ou un contenu intégré collé dans le contenu il y a des années avec une adresse http complète.
  • Un thème ou une extension qui construit une URL absolue à partir d'une option enregistrée.
  • Un réglage d'adresse du site encore enregistré en http.
  • Un widget tiers - une carte, une boîte de discussion, une police - servi en http.
SELECT ID, post_title FROM wp_posts
 WHERE post_content LIKE '%http://yourdomain.com%' LIMIT 20;

SELECT option_name FROM wp_options WHERE option_value LIKE '%http://yourdomain.com%';

Corriger le contenu, pas le symptôme

Réécrivez les liens http enregistrés en https - ou mieux, en un chemin sans hôte du tout, pour que le même contenu marche en préproduction et en production.

UPDATE wp_posts
   SET post_content = REPLACE(post_content, 'http://yourdomain.com', 'https://yourdomain.com')
 WHERE post_content LIKE '%http://yourdomain.com%';
Sauvegardez la base avant cet UPDATE, et lancez d'abord le SELECT pour savoir combien de lignes devraient changer. Un REPLACE qui touche dix fois plus de lignes que prévu est un motif qui était trop large.

Le tableau complet, redirections et en-têtes compris, se trouve dans Le contenu mixte après le passage à HTTPS.