Il doppio reindirizzamento che costa 780 millisecondi
Non si vede, non dà errore, non lo segnala nessuno. Eppure è probabilmente il difetto più diffuso e più facile da correggere che esista, e su un sito vero l'ho misurato: nove punti di punteggio buttati.
Cosa succede quando qualcuno digita il tuo indirizzo
Il tuo sito risponde a quattro indirizzi diversi, non a uno: con e senza www, con e senza https. Uno solo è quello vero — quello che vuoi compaia su Google — e gli altri tre devono portarci. Il punto è quanti passaggi ci mettono.
Il difetto, in concreto
Su un e-commerce vero, il mio, la catena era questa: chi digitava l'indirizzo col www e senza https veniva mandato prima alla versione sicura col www, e solo dopo all'indirizzo definitivo senza www. Due salti invece di uno. Ogni salto è un giro completo di rete: il browser chiede, aspetta, riceve la risposta «vai da un'altra parte», e ricomincia da capo.
Quanto costa davvero
Su una connessione veloce non te ne accorgi. Nella simulazione su rete mobile che usa Google — quella con cui ti assegna il punteggio — quel salto in più valeva 780 millisecondi. Il punteggio prestazioni passava da 92 a 83 a seconda di quale dei due indirizzi si misurava. Stesso sito, stesso server, stesso contenuto: cambiava solo la strada per arrivarci.
Perché non se ne accorge nessuno
Perché tu il tuo sito lo apri dai preferiti, che puntano già all'indirizzo giusto. E perché gli strumenti di misura li lanci sull'indirizzo che scrivi tu, che è quello buono. Il salto doppio lo prende solo chi digita a mano, chi arriva da un vecchio link, chi lo trova su un biglietto da visita stampato tre anni fa. Cioè proprio chi non ti conosce ancora.
Come si verifica in trenta secondi
Apri il tuo sito in una finestra anonima digitando l'indirizzo nei quattro modi possibili: con www e senza, con https e senza. Guarda dove atterri: deve essere sempre lo stesso indirizzo, e ci devi arrivare senza vedere la barra di caricamento ripartire due volte. Lo stesso dato compare nel referto di PageSpeed, fra gli approfondimenti, alla voce sui reindirizzamenti multipli.
Come si corregge
Con una regola sola nella configurazione del server, che manda ogni variante direttamente alla destinazione finale invece di passare per una tappa intermedia. Non è un lavoro da giornate: è una riga. La parte difficile non è scriverla, è sapere che serve.
La lezione che c'è sotto
Questo è il tipo di difetto che distingue un sito consegnato da un sito curato. Non lo trovi guardando il sito: lo trovi misurandolo, e misurandolo dall'indirizzo scomodo invece che da quello che ti fa fare bella figura. Io l'ho scoperto sul mio, l'ho scritto nel caso studio invece di rifare la misura sull'indirizzo che mi conveniva, e poi l'ho corretto: adesso tutte e quattro le varianti arrivano a destinazione con un salto solo, e nel referto di Google la voce sui reindirizzamenti multipli è sparita.
Il dettaglio tecnico: una sola regola, non due
L'errore tipico nasce dall'avere due regole separate che si applicano in cascata: una che forza https e una che toglie il www. Prese singolarmente sono corrette, ma in sequenza producono http://www → https://www → https://, cioè due 301 invece di uno.
La forma corretta è una regola unica che riconosce entrambe le condizioni e scrive direttamente la destinazione finale. Su Apache, in .htaccess:
RewriteCond %{HTTP_HOST} ^www\. [OR]
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://esempio.it%{REQUEST_URI} [R=301,L]
La differenza sta nell'operatore [OR]: le due condizioni non si sommano in due passaggi, si valutano insieme e producono un solo salto. Su Nginx la logica è identica, con un blocco server dedicato che raccoglie tutte le varianti e fa un unico return 301.
Per verificare senza aprire un browser basta una riga: curl -s -o /dev/null -L -w "%{num_redirects}" http://www.tuosito.it/. Il numero stampato deve essere 1. Se stampa 2, hai esattamente il difetto descritto in questo articolo.