www, reindirizzamento e contenuti misti
Modulo 3: Indirizzo, https e utenti · Tempo di lettura: 9 minuti
Obiettivo della lezione: Dopo questa lezione saprà scegliere un unico indirizzo principale, inviare tutte le varianti con un solo reindirizzamento verso di esso e individuare e risolvere i contenuti misti.
Concetti chiave: indirizzo canonico, 301 e 308, catena di reindirizzamenti, contenuti misti (mixed content), ricerca e sostituzione nel database, dati serializzati
Quattro indirizzi, un solo sito
Il Suo sito è raggiungibile tramite quattro indirizzi:
http://example.com
http://www.example.com
https://example.com
https://www.example.comPer un visitatore questo non fa differenza, ma per i motori di ricerca si tratta di quattro indirizzi diversi con lo stesso contenuto. Anche i cookie (come il cookie di accesso) valgono per nome: chi accede su www non risulta connesso sul dominio senza www. Per questo si sceglie un indirizzo canonico (l'indirizzo principale) e si reindirizzano gli altri tre verso di esso.
Quale scegliere è una questione di preferenza (lezione 2.1). L'importante è che l'indirizzo principale sia identico ovunque: nel DNS, nel certificato, in Impostazioni > Generale (lezione 3.1) e nei reindirizzamenti.
Reindirizzare con un 301, in un solo passaggio
Un reindirizzamento è una risposta del server: "questa pagina si trova altrove". Il browser passa quindi automaticamente al nuovo indirizzo. Il codice indica il tipo di reindirizzamento:
| Codice | Significato | Utilizzo |
|---|---|---|
| 301 | Trasferito permanentemente | La scelta fissa per http verso https e per www verso il dominio senza www (o viceversa) |
| 308 | Permanente, e il metodo (ad esempio l'invio di un modulo) resta invariato | Può essere usato anche per questo scopo; browser e motori di ricerca lo trattano come un 301 |
| 302 o 307 | Temporaneo | Solo per qualcosa di realmente temporaneo, come una pagina di manutenzione |
Un reindirizzamento permanente comunica ai motori di ricerca che il nuovo indirizzo è quello effettivo. Con uno temporaneo, continuano a ricordare il vecchio indirizzo.
Faccia attenzione anche alla catena. Supponiamo che il Suo indirizzo principale sia https://example.com. In questo caso desidera:
http://www.example.com 301 https://example.com/
http://example.com 301 https://example.com/
https://www.example.com 301 https://example.com/
https://example.com 200Ogni variante arriva all'indirizzo principale in un solo passaggio. Ciò che spesso accade invece è:
http://www.example.com 301 https://www.example.com/
https://www.example.com 301 https://example.com/Funziona comunque, ma costa un passaggio in più (tempo di attesa aggiuntivo, soprattutto su mobile) e una stretta di mano TLS in più. Peggio ancora è un ciclo: il server web reindirizza verso https, WordPress reindirizza indietro verso http perché gli indirizzi nelle impostazioni sono ancora su http, e il browser segnala "troppi reindirizzamenti". In quel caso due impostazioni si contrastano a vicenda. Assicuri che ci sia una sola parte che reindirizza verso https (il server web o il pannello), e che gli indirizzi in WordPress siano già impostati sull'indirizzo principale.
Anche WordPress effettua reindirizzamenti: se qualcuno richiede https://www.example.com/contact/ mentre l'indirizzo del sito è https://example.com, WordPress reindirizza verso https://example.com/contact/. Questo funziona solo se la richiesta arriva a WordPress, quindi se il server web fa sì che anche il nome www punti a questo sito.
Contenuti misti
I contenuti misti (mixed content) sono una pagina https che carica elementi tramite http://: un'immagine, un foglio di stile, uno script, un font o un video incorporato. Il browser considera questo non sicuro, perché tali elementi possono essere modificati durante il trasferimento.
- Script, fogli di stile e iframe tramite http vengono bloccati dai browser. Il Suo sito può apparire danneggiato o una funzione può non funzionare.
- Immagini, audio e video tramite http: i browser moderni provano automaticamente a recuperarli tramite https; se questo non riesce, vengono bloccati. Il lucchetto può allora mostrare un avviso.
Da dove proviene il problema:
- Vecchi link nel Suo contenuto: un sito che un tempo era su http ha in migliaia di articoli
<img src="http://example.com/wp-content/uploads/...">. WordPress salva questi link letteralmente nel database. - Impostazioni di tema o plugin con un indirizzo completo, ad esempio un logo o uno sfondo con
http://. - Elementi esterni di un altro sito raggiungibili solo tramite http. Questi vanno sostituiti o rimossi.
- Indirizzi in Impostazioni > Generale ancora impostati su http (lezione 3.1).
Come trovarli
Apra la pagina, prema F12 e guardi nella scheda Console. Il browser segnala ogni contenuto misto con l'indirizzo dell'elemento. In alternativa, cerchi nel codice sorgente della pagina (Ctrl+U) src="http:// e href="http://. I link verso altri siti nel testo normale (<a href="http://...">) non costituiscono contenuto misto; si tratta di elementi che la pagina carica.
Cercare e sostituire, ma nel modo corretto
La soluzione per i vecchi link nel Suo contenuto è sostituire tutti gli http://example.com nel database con https://example.com. La tentazione è di usare un comando SQL come:
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://example.com', 'https://example.com');Non lo faccia. Molte impostazioni di temi, plugin e widget sono memorizzate in forma serializzata. L'aspetto è il seguente:
s:27:"http://example.com/logo.png";s:27 significa: segue un testo di 27 caratteri. Dopo una sostituzione semplice il testo è di 28 caratteri (si è aggiunta una s), ma il numero indicato rimane 27. PHP non riesce più a leggere il valore e l'impostazione scompare silenziosamente: un menu vuoto, un logo sparito, widget mancanti.
Utilizzi uno strumento che aggiorna correttamente queste lunghezze:
- WP-CLI: prima verifichi, poi esegua.
wp search-replace 'http://example.com' 'https://example.com' --all-tables --dry-run
wp search-replace 'http://example.com' 'https://example.com' --all-tablesCon --dry-run vede quante sostituzioni verrebbero effettuate per tabella, senza modificare nulla.
- Un plugin di ricerca e sostituzione che supporti i dati serializzati (ce ne sono diversi nella directory plugin di wordpress.org). Rimuova poi nuovamente il plugin.
Esegua sempre prima un backup (lezione 8.1). Non sostituisca mai qualcosa come example.com senza http:// davanti: in tal caso modificherebbe anche indirizzi email e altri testi.
In pratica: come appare in un pannello
Come esempio utilizziamo DirectAdmin. Altri pannelli hanno un interruttore simile per "sempre https".
- Nelle impostazioni del dominio, attivi Forza SSL con reindirizzamento https (lezione 3.1).
- Scelga, per il dominio, se www deve puntare al dominio senza www o viceversa (in DirectAdmin nelle impostazioni del dominio; altrimenti con un reindirizzamento tramite Reindirizzamenti del sito o
.htaccess). - Verifichi la catena con il comando qui sotto oppure con gli strumenti di sviluppo del Suo browser (scheda Rete, con la casella "Mantieni registro" attiva).
Riepilogo
- Scelga un indirizzo canonico e faccia sì che le altre tre varianti vi arrivino con un 301 (o 308), in un solo passaggio.
- Lasci che solo una parte reindirizzi verso https; altrimenti si crea un ciclo.
- I contenuti misti sono una pagina https che carica elementi tramite http; la console del browser mostra quali.
- I vecchi link nel database si sostituiscono con
wp search-replaceo un plugin che comprenda i dati serializzati, mai con un semplice SQL REPLACE. - Sempre prima un backup, e prima un test di prova.
Quiz
Esercizio
Esercizio A3.2: Un solo indirizzo principale e nessun contenuto misto. Inserisca il Suo dominio. Il programma apre le quattro varianti (http e https, con e senza www) e segue i reindirizzamenti. L'esito è positivo se tutte e quattro arrivano allo stesso indirizzo con https, con al massimo un reindirizzamento per variante e solo codici permanenti (301 o 308). In seguito il programma legge l'HTML della homepage e cerca script, fogli di stile, immagini, iframe e font caricati tramite http://.
Per saperne di più
Questi articoli descrivono i passaggi nei pannelli di WebOké; in altri pannelli funzionano in modo simile.
- Guida DirectAdmin 6.4: Reindirizzare sempre i visitatori su https
- Guida DirectAdmin 4.7: Reindirizzamenti del sito: inoltrare un dominio o una pagina
- Reindirizzamento obbligatorio dei visitatori verso https
- Corso gratuito DNS 3.4: www, reindirizzamento e ciò che il DNS non fa
- Contenuti misti (MDN, in inglese): https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content
- wp search-replace (developer.wordpress.org, in inglese): https://developer.wordpress.org/cli/commands/search-replace/
