Come appare il messaggio
This page isn't working
example.com redirected you too many times.
ERR_TOO_MANY_REDIRECTSCause frequenti
- Un CDN o proxy parla in HTTP semplice con il tuo server, mentre il server reindirizza ogni richiesta HTTP a HTTPS (il tipico loop da Flexible SSL).
- L'applicazione costruisce il redirect con lo schema sbagliato perché il proxy non passa
X-Forwarded-Proto, e reindirizza a HTTPS ancora e ancora. - Regole www e non-www in conflitto: il server reindirizza verso l'una, l'applicazione o il CMS verso l'altra.
- Un CMS ha
siteurlohomeimpostati a un indirizzo diverso da quello usato dai visitatori. - Cookie obsoleti in un loop di reindirizzamento del login (in una finestra privata funziona).
Verifica
- Segui i redirect con un limite e leggi ogni Location
curl -sIL --max-redirs 10 https://example.com/ | grep -iE '^(HTTP|location)' - Cosa fa l'HTTP semplice?
curl -sI http://example.com/ | grep -iE '^(HTTP|location)' - Regole di redirect nella configurazione nginx
nginx -T 2>/dev/null | grep -nE 'return 30[0-9]|rewrite .*(permanent|redirect)|X-Forwarded-Proto' - Prova con l'header del proxy che l'app si aspetta
curl -sI -H 'X-Forwarded-Proto: https' http://127.0.0.1/ -H 'Host: example.com' | grep -iE '^(HTTP|location)'
Soluzione
- Leggi la catena di Location del primo controllo: i due URL che si alternano mostrano chi reindirizza dove.
- Con un CDN imposta la sua modalità SSL in modo che contatti il tuo origin in HTTPS (per esempio Full) e non in HTTP semplice.
- Dietro un proxy passa lo schema:
proxy_set_header X-Forwarded-Proto $scheme;e configura l'applicazione perché si fidi. - Scegli un solo host canonico (con o senza www) e reindirizza una volta sola, in un solo punto.
- Correggi
siteurlehomedel CMS, cancella i cookie del sito e riprova.
Domande frequenti
Perché in una finestra privata funziona?
Un cookie, spesso di sessione o di login, partecipa al loop. Cancellare i cookie del sito lo conferma.
Quanti redirect segue il browser?
Esiste un limite che varia da browser a browser, quindi non fare affidamento su un numero. Ogni loop finisce prima o poi in questo errore.