Un certificato copre tutto il sito, quindi un lucchetto che sparisce su una sola pagina non è mai il certificato. Quella pagina sta caricando almeno una cosa via http nudo, ed è per questo che il browser declassa l'indicatore.

Lo trovi in un posto solo

Apra la console su quella pagina. L'avviso di contenuto misto nomina l'URL esatto. La diagnosi è tutta lì: il resto è decidere da dove sia arrivato quell'URL.

Oppure lo trovi dal server

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

Da dove arriva di solito

  • Un'immagine o un contenuto incorporato incollato nel testo anni fa con un indirizzo http completo.
  • Un tema o un plugin che costruisce un URL assoluto da un'opzione salvata.
  • Un'impostazione dell'indirizzo del sito ancora registrata come http.
  • Un widget di terze parti - una mappa, una chat, un font - servito via 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%';

Sistemi il contenuto, non il sintomo

Riscriva i link http salvati in https - o meglio, in un percorso senza alcun host, così lo stesso contenuto funziona in staging e in produzione.

UPDATE wp_posts
   SET post_content = REPLACE(post_content, 'http://yourdomain.com', 'https://yourdomain.com')
 WHERE post_content LIKE '%http://yourdomain.com%';
Faccia un backup del database prima di quell'UPDATE, ed esegua prima la SELECT per sapere quante righe dovrebbero cambiare. Una REPLACE che tocca dieci volte più righe del previsto è un pattern che era troppo largo.

Il quadro completo, redirect e intestazioni compresi, è in Contenuto misto dopo il passaggio a HTTPS.