Un singolo redirect è innocuo. Il problema nasce quando i redirect si accumulano: la pagina A rimanda a B, che rimanda a C, che rimanda a D. Ogni salto aggiunge una richiesta, un ritardo e una possibilità di errore. Nel caso peggiore, la catena si chiude su sé stessa e diventa un loop, e la pagina semplicemente non si apre.
Come nascono le catene
Quasi nessuno crea una catena intenzionalmente. Si formano per stratificazione, un intervento dopo l'altro:
- anni fa il sito passa da HTTP a HTTPS:
http://→https://; - poi si decide di togliere il
www:https://www.→https://; - poi si cambia la struttura degli URL:
/blog/2019/articolo→/articoli/articolo; - infine si rinomina lo slug:
/articoli/articolo→/articoli/titolo-nuovo.
Un vecchio link esterno verso http://www.example.com/blog/2019/articolo attraversa ora quattro redirect prima di arrivare a destinazione. Nessuno dei quattro è sbagliato preso da solo; è la somma che crea il problema.
Altre cause frequenti:
- regole di normalizzazione applicate in sequenza invece che insieme (protocollo, poi host, poi barra finale);
- redirect configurati sia nella CDN sia nel CMS, che si sommano;
- plugin che aggiungono automaticamente un redirect a ogni cambio di slug, anche su pagine già reindirizzate.
Perché sono un problema
Per gli utenti
Ogni salto è un viaggio di andata e ritorno verso il server, e su una connessione mobile lenta ognuno può costare in modo percepibile. Con tre o quattro salti il ritardo si somma prima ancora che inizi il caricamento della pagina.
Per i crawler
I motori seguono un numero limitato di salti consecutivi; oltre una certa soglia interrompono e trattano l'URL come errore. Anche entro il limite, ogni salto è una richiesta che consuma risorse di scansione. E più lunga è la catena, più tempo impiega il motore a consolidare i segnali sulla destinazione finale.
Per la manutenzione
Una catena è fragile: basta che un anello intermedio venga rimosso, magari pensando che «quella vecchia regola non serva più», perché l'intero percorso si interrompa con un 404.
I loop
Un loop si verifica quando la catena torna a un URL già visitato. I casi tipici:
- regola che aggiunge la barra finale e un'altra che la toglie;
- HTTPS forzato dal server mentre la CDN, che comunica col server in HTTP, riceve un redirect e lo ripete all'infinito;
- redirect basato sulla lingua che manda alla versione italiana, che a sua volta rimanda alla scelta della lingua.
Il browser si ferma dopo un certo numero di salti con un errore del tipo «troppi reindirizzamenti». Il crawler fa lo stesso, e la pagina sparisce dall'indice.
Come trovarli
Con un crawler
Un crawler desktop segnala catene e loop durante la scansione, indicando URL di partenza, salti intermedi e destinazione finale. Conviene lanciarlo in due modalità:
- partendo dalla home, per trovare i link interni che finiscono in una catena;
- caricando un elenco di URL storici, presi da vecchie sitemap, dai log o dagli strumenti per webmaster, per verificare i percorsi che arrivano dall'esterno.
Con la riga di comando
Per un singolo URL, curl mostra tutti i salti:
curl -sIL http://www.example.com/blog/2019/articolo | grep -i -E "^(HTTP|location)"
L'output elenca ogni codice di stato e ogni intestazione Location, in ordine.
Come appiattirli
L'obiettivo è che ogni URL vecchio porti alla destinazione finale in un solo salto.
- Raccogli tutte le regole in un'unica tabella: origine, destinazione, dove è configurata.
- Risolvi le destinazioni: per ogni origine, segui la catena fino in fondo e scrivi direttamente l'URL finale.
- Unifica le normalizzazioni: una sola regola che porta protocollo, host e barra finale nella forma corretta in un colpo solo.
- Elimina i duplicati tra CDN, server e CMS, scegliendo un solo livello in cui gestire i redirect.
- Aggiorna i link interni in modo che puntino direttamente alla destinazione, senza passare da alcun redirect.
- Riverifica con il crawler l'elenco degli URL storici.
| Prima | Dopo |
|---|---|
| A → B → C → D | A → D |
| B → C → D | B → D |
| C → D | C → D |
In sintesi
- Le catene nascono dalla somma di interventi successivi, non da un errore singolo.
- Ogni salto rallenta utenti e crawler e aumenta la fragilità.
- I loop rendono la pagina irraggiungibile per browser e motori.
- Verifica con un crawler sia i link interni sia gli URL storici.
- Ogni vecchio URL deve arrivare alla destinazione finale in un solo salto.