Troppi reindirizzamenti: risolvi i loop ERR_TOO_MANY_REDIRECTS | We.Inc
Incolla le tue regole di redirect e seguile passo per passo finché non appare il loop. Copre i loop HTTPS dietro un proxy, i loop www e i loop di cookie, con le soluzioni.
ERR_TOO_MANY_REDIRECTS compare quando una pagina continua a mandare il browser a un altro indirizzo che alla fine lo rimanda indietro, quindi la catena non finisce mai e il browser si arrende. I colpevoli abituali sono due livelli che forzano entrambi HTTPS o www in direzioni opposte. Si risolve lasciando che un solo livello gestisca ogni redirect.
I loop dietro la maggior parte degli errori di troppi reindirizzamenti
Loop
Come succede
Soluzione
HTTPS dietro un proxy
Il proxy parla in HTTP semplice con il server, che reindirizza di nuovo a HTTPS
Reindirizza in base a X-Forwarded-Proto, oppure solo sul proxy
www contro dominio senza www
Un livello aggiunge www, un altro lo toglie
Scegli un host e reindirizza verso di esso in un solo punto
Loop di cookie o di login
La pagina di login ti manda alla pagina account, che ti rimanda indietro perché il cookie non è mai stato salvato
Controlla i flag Domain, Path e Secure del cookie
Slash finale
Una regola aggiunge uno slash, un'altra lo toglie
Scegli una sola forma per ogni URL
Scrivi ogni redirect del tuo sito su una riga come from -> to, inserisci l'indirizzo di partenza, e il simulatore segue la catena come farebbe un browser. Si ferma quando un indirizzo si ripete, quando nessuna regola corrisponde, o dopo 20 passaggi, il limite del Fetch Standard.
Elenca ogni redirect che conosci: configurazione del server, pannello dell'hosting, regole della CDN, codice dell'app.
Scrivili uno per riga come indirizzi completi uniti da ->.
Inserisci l'indirizzo che fallisce nel browser e leggi l'elenco dei passaggi.
Rimuovi o modifica la regola che riporta la catena a un indirizzo già visitato.
Cancella i cookie del sito prima di testare di nuovo. Un cookie vecchio può mantenere attivo un loop di login anche dopo aver corretto la configurazione.
I browser mettono in cache i redirect 301. Prova le correzioni in una finestra privata, oppure usa curl -I per vedere ogni risposta senza cache.
Reindirizza direttamente all'indirizzo finale. http://example.com deve andare a https://www.example.com in un solo passaggio, non in due.
Quando una CDN o un host offre un'opzione per forzare HTTPS, usa quella o la regola del tuo server, mai entrambe senza verificare come interagiscono.
Domande frequenti
Cosa significa che ti ha reindirizzato troppe volte?
Quel messaggio e il codice di errore ERR_TOO_MANY_REDIRECTS descrivono la stessa cosa: il sito ha risposto con un redirect dopo l'altro e il browser ha smesso di seguirli. Sul tuo computer non c'è nulla di rotto, anche se un cookie vecchio può far parte del loop.
Quanti redirect segue un browser?
Il Fetch Standard, implementato dai browser, restituisce un errore di rete quando il conteggio dei redirect di una richiesta raggiunge 20.
Perché forzare HTTPS causa un loop dietro un proxy o una CDN?
Il visitatore si connette con HTTPS, ma il proxy inoltra la richiesta al tuo server in HTTP semplice. Il tuo server vede HTTP e reindirizza a HTTPS, e il ciclo si ripete. Cloudflare documenta proprio questo loop per la sua modalità di cifratura Flexible.
Cancellare i cookie risolve i troppi reindirizzamenti?
Solo quando un cookie fa parte del loop, come una sessione di login che non viene mai salvata. Se il loop è nelle regole del server, cancellare i cookie non cambia nulla.
Un loop di redirect può danneggiare la SEO?
Una pagina bloccata in un loop non si carica mai, quindi nemmeno i crawler possono leggerla. Correggi i loop rapidamente e mantieni brevi le catene di redirect.
Perché i loop nascono a livelli
Un sito moderno ha spesso tre o quattro punti che possono reindirizzare: la CDN, la piattaforma di hosting, il web server e l'app. Ognuno si configura in una schermata a sé, quindi due di loro possono essere in disaccordo senza che nessuno se ne accorga su schema, host o slash finale.
Il simulatore qui sopra modella proprio questo. Metti le regole di ogni livello nella stessa lista e il disaccordo diventa un ciclo visibile.
Il problema dello schema dietro il proxy
Quando il TLS termina su un proxy o un load balancer, il tuo server vede sempre e solo HTTP semplice. Una regola che dice di reindirizzare qualsiasi cosa in HTTP verso HTTPS scatta allora a ogni richiesta, comprese quelle che per il visitatore erano HTTPS. I proxy inviano lo schema originale nell'header X-Forwarded-Proto, quindi il server deve controllare quello.
Configurazioni che reindirizzano una volta sola
nginx che termina il TLS da sé
Un blocco server intercetta ogni richiesta HTTP e la manda direttamente all'host finale.
nginx dietro un proxy che termina il TLS
Reindirizza solo quando lo schema originale del visitatore, inviato dal proxy in X-Forwarded-Proto, era http.
Vedere ogni passaggio dalla riga di comando
-I chiede solo gli header, -L segue i redirect. Ogni blocco nell'output è un passaggio.
Simulatore di loop di redirect
Regole di redirect, una per riga (from -> to)
Indirizzo di partenza
Passaggi che il browser seguirebbe
Loop: la catena torna a {v}, quindi il browser si ferma con troppi reindirizzamenti.
Nessun loop: la catena termina a {v} dopo {n} redirect.
La catena ha superato {n} passaggi senza terminare, quindi il browser si arrende.
Nessuna regola corrisponde all'indirizzo di partenza, quindi si carica senza redirect.