Menu
Bug e Vulnerabilità

Come risolvere gli errori Mixed Content in WordPress dopo l’attivazione di SSL

Gianluca Gentile · · 5 min di lettura

Come risolvere gli errori Mixed Content in WordPress dopo l’attivazione di SSL

Hai attivato il certificato SSL sul tuo sito WordPress, ma il browser mostra un avviso di sicurezza o il lucchetto nella barra degli indirizzi non è verde? Il problema è quasi certamente il mixed content: la pagina viene caricata via HTTPS ma alcune risorse (immagini, script, fogli di stile) vengono ancora richiamate via HTTP. In questa guida ti spiego come individuare e correggere tutti gli errori mixed content.

Cos’è il mixed content e perché è un problema

Quando una pagina HTTPS carica risorse via HTTP, il browser considera la pagina non completamente sicura. Esistono due tipi di mixed content:

  • Mixed content passivo: riguarda risorse come immagini, video e audio. Il browser le carica ma mostra un avviso nella console. Il lucchetto potrebbe non apparire o apparire con un triangolo di avvertimento.
  • Mixed content attivo: riguarda script JavaScript, fogli di stile CSS, iframe e font. Il browser blocca queste risorse perché possono essere manipolate da un attaccante. Questo può rompere funzionalità del sito.

Oltre ai problemi di sicurezza, il mixed content influisce negativamente sul posizionamento SEO: Google preferisce siti completamente HTTPS e penalizza quelli con contenuti misti.

Individuare gli errori mixed content

Per trovare tutte le risorse HTTP sulla tua pagina:

Metodo 1: Console del browser. Apri gli Strumenti per sviluppatori (F12) e vai nella scheda Console. Gli errori mixed content appaiono come avvisi gialli o errori rossi con il testo “Mixed Content”. Ogni avviso indica l’URL della risorsa problematica.

Metodo 2: Why No Padlock. Visita il sito whynopadlock.com e inserisci l’URL del tuo sito. Il servizio analizza la pagina e elenca tutte le risorse caricate via HTTP.

Metodo 3: Scansione completa del sito. Per controllare tutte le pagine e non solo la homepage, usa un plugin come SSL Insecure Content Fixer o lo strumento da riga di comando ssl-check. Questi strumenti scansionano ogni pagina del sito e identificano tutti gli URL HTTP.

Aggiornare gli URL nel database

La causa più comune di mixed content è che gli URL nel database di WordPress puntano ancora a http://. Quando hai installato WordPress senza SSL, tutti i link interni, le immagini nei contenuti e le impostazioni sono stati salvati con HTTP. Devi aggiornarli tutti a HTTPS.

Il metodo più sicuro è usare WP-CLI:

wp search-replace 'http://tuodominio.com' 'https://tuodominio.com' --all-tables --dry-run

Il parametro –dry-run mostra quante sostituzioni verranno fatte senza modificare nulla. Se i numeri ti sembrano ragionevoli, esegui di nuovo senza –dry-run:

wp search-replace 'http://tuodominio.com' 'https://tuodominio.com' --all-tables

Se non hai accesso SSH, puoi usare il plugin Better Search Replace: cerca http://tuodominio.com e sostituisci con https://tuodominio.com. Seleziona tutte le tabelle e fai prima un test (dry run).

Risorse esterne caricate via HTTP

Dopo aver aggiornato il database, potresti avere ancora mixed content causato da risorse esterne:

  • Font da CDN: se carichi font da un CDN con URL http://, cambia il protocollo a https:// o usa URL protocol-relative (//cdn.esempio.com/font.woff).
  • Script di terze parti: widget, codici di tracciamento o embed che usano HTTP. Verifica che il servizio esterno supporti HTTPS e aggiorna gli URL.
  • Immagini esterne: se i tuoi articoli contengono immagini ospitate su altri siti via HTTP, dovrai scaricarle e caricarle nella tua libreria media, oppure verificare che il sito esterno supporti HTTPS.

Per le risorse nel tema o nei plugin, controlla i file PHP e JavaScript cercando URL che iniziano con http://.

Usare un plugin per correggere automaticamente

Se hai molte risorse mixed content e vuoi una soluzione rapida, il plugin SSL Insecure Content Fixer può correggere automaticamente gli URL al volo:

  1. Installa e attiva il plugin.
  2. Vai in Impostazioni → SSL Insecure Content.
  3. Scegli il livello di correzione: Simple corregge gli URL nel contenuto degli articoli e nei widget. Content è più aggressivo e corregge anche script e stili.

Questo plugin è utile come soluzione temporanea, ma la correzione definitiva è aggiornare gli URL nel database e nei file del tema. Il plugin aggiunge un overhead a ogni caricamento di pagina perché deve elaborare tutti i contenuti.

Forzare HTTPS per tutte le risorse

Come misura aggiuntiva, aggiungi questo header CSP nel tuo file .htaccess o nella configurazione Nginx:

Content-Security-Policy: upgrade-insecure-requests

Questa direttiva dice al browser di caricare automaticamente via HTTPS tutte le risorse richieste via HTTP. Non è una soluzione definitiva — è meglio correggere gli URL alla fonte — ma è un’ottima rete di sicurezza durante la transizione.

Controllare tema e plugin per URL hardcoded

Alcuni temi e plugin contengono URL http:// scritti direttamente nel codice PHP, JavaScript o CSS. Queste risorse non vengono corrette aggiornando il database. Per trovarle:

grep -r "http://" wp-content/themes/tuo-tema/ --include="*.php" --include="*.js" --include="*.css"
grep -r "http://" wp-content/plugins/ --include="*.php" --include="*.js" --include="*.css"

Se trovi URL hardcoded nei plugin, non modificarli direttamente: le modifiche verrebbero perse al prossimo aggiornamento. Segnala il problema allo sviluppatore del plugin. Per il tuo tema, specialmente se è un tema child, puoi correggere gli URL direttamente nei file.

Per le risorse caricate correttamente in WordPress tramite wp_enqueue_style() e wp_enqueue_script(), il protocollo viene impostato automaticamente in base alla configurazione del sito. Se hai aggiornato gli URL nelle impostazioni di WordPress a HTTPS, queste risorse useranno automaticamente il protocollo corretto.

Serve assistenza?

Se il tuo sito WordPress mostra errori mixed content dopo l’attivazione di SSL e non riesci a risolverli, il team di SoccorsoWP può correggere tutti gli URL e configurare SSL correttamente. Apri un ticket e ottieni il lucchetto verde.

Condividi: