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.