ERR_TOO_MANY_REDIRECTS: trovare il ciclo di reindirizzamenti e chiuderlo
· 6 min di lettura
Cosa significa l’errore
Il browser ha chiesto una pagina e il server ha risposto “vai a quest’altro indirizzo”. Il browser ci è andato, e il server ha risposto di nuovo “vai altrove”, finché la destinazione è tornata a essere la prima. Dopo una ventina di salti Chrome si ferma e mostra “Questa pagina non funziona” con la riga “example.com ti ha reindirizzato troppe volte” e il codice ERR_TOO_MANY_REDIRECTS; Firefox dice “La pagina non reindirizza in modo corretto”.
Il server è acceso, il DNS funziona, il certificato è valido: il sito gira in tondo. Quasi sempre il ciclo nasce da due regole che si contraddicono, per esempio una che impone HTTPS e una che riporta a HTTP, oppure una che aggiunge www e una che lo toglie.
Cause frequenti
- Ciclo HTTP ↔ HTTPS con Cloudflare in modalità “Flexible”. Cloudflare parla HTTPS con il visitatore ma HTTP con il tuo server. Il server vede una richiesta HTTP e la reindirizza a HTTPS; Cloudflare la riporta in HTTP; e così via. La causa più diffusa in assoluto.
- Reindirizzamento HTTPS doppio. Il server web reindirizza a HTTPS, e lo fa anche l’applicazione (WordPress, un plugin, un
.htaccesscopiato), ma con una condizione che non vede il TLS perché davanti c’è un proxy. - URL di WordPress sbagliati.
siteurlehomenel database puntano ahttp://o al dominio senzawww, mentre il server imponehttps://www.: WordPress riporta ogni richiesta al suo indirizzo, il server la riporta indietro. - www ↔ senza www. Un
.htaccessaggiungewww, il bloccoserverdi nginx o il pannello del provider lo toglie. - Due
return 301o dueRewriteRulerimaste da una vecchia configurazione, in un file incluso o in un.htaccessdi una sottocartella. - Un plugin di reindirizzamento o di cache con una regola vecchia, una lingua forzata o una versione mobile che rimanda a sé stessa.
Se sei un visitatore
Elimina i cookie di quel sito (nelle impostazioni del browser, solo per quel dominio) e prova in una finestra in incognito o in un altro browser. Se l’errore resta, il ciclo è sul server e può chiuderlo solo il proprietario: non c’è nulla da sistemare sul tuo dispositivo.
Se è il tuo sito: verificare prima
Apri il Website down checker: mostra la catena di reindirizzamenti vista dall’esterno, con ogni codice e ogni destinazione. Lo stesso dalla riga di comando:
# segui i reindirizzamenti e mostra le intestazioni (max 10 salti)
curl -IL --max-redirs 10 https://example.com/
# una sola richiesta, senza seguire: cosa risponde il server?
curl -I https://example.com/
curl -I http://example.com/
curl -I https://www.example.com/
Leggi le righe HTTP/… e location:. Se https://example.com/ rimanda allo stesso indirizzo, o a http:// che rimanda di nuovo a https://, hai trovato il ciclo. La destinazione dice chi lo produce: http:// dopo una richiesta https:// indica quasi sempre un proxy o Cloudflare; www che compare e sparisce indica due regole di dominio.
Per capire se è il server web o l’applicazione, chiedi un file statico che l’applicazione non tocca:
curl -I https://example.com/robots.txt
Se il file statico risponde 200 e la home gira in tondo, il ciclo è nell’applicazione (WordPress, plugin). Se anche il file statico viene reindirizzato, il ciclo è nel server web, nell’.htaccess o nel proxy.
Soluzioni sul tuo server o sul tuo hosting
1. Cloudflare: passare da “Flexible” a “Full (strict)”
Nel pannello di Cloudflare, sezione SSL/TLS, imposta la modalità su “Full (strict)”. Serve un certificato valido sul server di origine; se non c’è, crealo con certbot o con il certificato di origine di Cloudflare. In alternativa, finché resti in “Flexible”, togli il reindirizzamento HTTPS dal server e lascia che lo faccia Cloudflare con “Always Use HTTPS”. Mai entrambe le cose insieme.
2. Dietro un proxy: reindirizzare in base all’intestazione giusta
Quando c’è un proxy davanti, il server vede sempre HTTP. La regola deve guardare X-Forwarded-Proto, non la porta:
# .htaccess (Apache)
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
In nginx, lascia il reindirizzamento solo nel blocco che ascolta sulla porta 80 e nessun return 301 https://… nel blocco 443.
3. WordPress: allineare siteurl e home
Controlla i due valori e portali esattamente all’indirizzo che il server impone (schema e www compresi):
wp option get siteurl
wp option get home
wp option update siteurl https://www.example.com
wp option update home https://www.example.com
Senza WP-CLI, in wp-config.php:
define('WP_HOME', 'https://www.example.com');
define('WP_SITEURL', 'https://www.example.com');
Se WordPress sta dietro un proxy, aggiungi in wp-config.php prima della riga require_once ABSPATH . 'wp-settings.php';:
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
4. Una sola regola per il dominio
Decidi una forma canonica (https://www.example.com oppure https://example.com) e lascia una sola regola che ci porta: nel server web, nell’.htaccess o nel pannello del provider, non in due posti. In nginx:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://www.example.com$request_uri;
}
Cerca le regole doppie con grep -ri "RewriteRule\|return 301" /etc/nginx /var/www/example.com/.htaccess e nelle sottocartelle.
5. Plugin di reindirizzamento e cache
Disattiva per un momento i plugin di reindirizzamento, cache, lingua e sicurezza (wp plugin deactivate nome-plugin, oppure rinominando la cartella in wp-content/plugins/). Se il ciclo sparisce, riattivali uno alla volta e correggi la regola nel colpevole; svuota poi la cache del plugin e quella di Cloudflare.
Se il problema è presso il tuo provider di hosting
Su un hosting condiviso il reindirizzamento HTTPS o www è spesso un’opzione del pannello cliente, che si somma al tuo .htaccess. Disattiva l’opzione o la tua regola, non tutte e due. Se non trovi l’origine, invia questo messaggio:
Buongiorno, da circa le 14:00 (UTC) il mio sito example.com restituisce ERR_TOO_MANY_REDIRECTS:
curl -ILmostra un ciclo tra la versione http e la versione https del dominio. Nel mio .htaccess c’è una sola regola di reindirizzamento. È attivo un reindirizzamento HTTPS o www anche dal vostro lato, per esempio dal pannello o da un proxy davanti al mio spazio web?
Perché non succeda di nuovo
Un ciclo di reindirizzamenti compare quasi sempre subito dopo una modifica: un nuovo certificato, un plugin, un cambio di modalità su Cloudflare. Un controllo HTTP dall’esterno lo nota al primo giro e ti avvisa prima dei visitatori. Il server di origine non risponde affatto dietro Cloudflare? È un altro caso: errore 521 e 522. Il browser si ferma invece sul certificato? Leggi “La connessione non è privata”. Per un sito WordPress, l’assistenza WordPress su richiesta tiene d’occhio aggiornamenti e plugin, senza contratto.
Down? Interveniamo. Sul tuo server o su un hosting condiviso con accesso SSH, il Quick Fix corregge i piccoli errori di configurazione come una regola di reindirizzamento doppia, con copia di backup prima, a prezzo fisso, 24 ore su 24, anche nel fine settimana; il Deep Fix si occupa di proxy, Cloudflare e URL di WordPress, a blocchi di 15 minuti; la stima è il prezzo massimo.
E adesso
Verifica dall’esterno
Il sito è down per tutti o solo per te, e cosa risponde il server? Gratis, senza registrazione.
Website down checkerDown? Interveniamo.
Sul tuo server o su un hosting condiviso con accesso SSH: Quick Fix a prezzo fisso per le cause più comuni, Deep Fix fatturato a blocchi di 15 minuti per tutto il resto, 24/7. Prezzo visibile prima dell’ordine.
Ordina un interventoAltre guide
- Sito non raggiungibile: cosa fare nei primi 15 minuti
- Server down o non raggiungibile: cosa controllare e in che ordine
- Errore 500 Internal Server Error: trovare la causa nei log e rimettere online il sito
- Errore 502 Bad Gateway: trovare la causa e risolverlo
- Errore 503: sovraccarico, manutenzione o limite dell’hosting?
- Errore 504 Gateway Timeout: trovare cosa rallenta
- Errore 521 e 522 di Cloudflare: il server di origine non risponde
- DNS_PROBE_FINISHED_NXDOMAIN: il dominio non risponde più
- ERR_CONNECTION_REFUSED: il server rifiuta la connessione
- ERR_CONNECTION_TIMED_OUT: il server non risponde in tempo
- Cosa significa “La connessione non è privata” e come risolverlo
- ERR_SSL_PROTOCOL_ERROR: la connessione sicura fallisce prima del certificato
- Errore 403 Forbidden: cosa blocca l’accesso al tuo sito