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.