Un lucchetto assente su un sito con certificato valido è contenuto misto: la pagina è arrivata via https e qualcosa al suo interno no. Il browser blocca o declassa, e il lucchetto sparisce.
Lo trovi in un posto solo
La console nomina l'URL esatto. Indovinare quale immagine sia costa molto più tempo che aprirla.
// browser console
Mixed Content: The page at 'https://...' was loaded over HTTPS,
but requested an insecure resource 'http://...'.
Da dove arriva di solito
- URL http:// assolute nel database - scritte quando il sito era http e mai aggiornate.
- Un URL di script o di font scritto a mano dentro un tema.
- Un contenuto incorporato - una mappa, un video, un widget - il cui fornitore è ancora su http.
Sistemi il database
wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --all-tables --precise
Faccia un backup prima di un cerca-e-sostituisci. Riscrive ogni tabella, e una sostituzione ingenua può rovinare i dati serializzati: usi uno strumento che capisce la serializzazione, come fa wp search-replace.
Prenda il resto
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
Dice al browser di andare a prendere le sottorisorse http via https. È una rete per ciò che lei non controlla, non un sostituto della correzione dei suoi URL: se dall'altra parte non c'è https, la risorsa fallisce lo stesso.
Meglio l'URL senza protocollo? No
//example.com/x.js era la vecchia risposta e oggi è sconsigliato: su una pagina aperta in locale via file:// si rompe, e nasconde quale protocollo si intenda. Scriva https:// per esteso.
Dopo la correzione, ricarichi forzando. Il browser tiene in cache il suo verdetto sulla pagina e continuerà a mostrare il lucchetto rotto dalla cache.