Trop de redirections : trouver la boucle, puis la casser
Trop de redirections (ERR_TOO_MANY_REDIRECTS)
Trop de redirections : corriger les boucles ERR_TOO_MANY_REDIRECTS | We.Inc
Collez vos règles de redirection et regardez-les s'exécuter étape par étape jusqu'à ce que la boucle apparaisse. Couvre les boucles HTTPS derrière un proxy, les boucles www et les boucles de cookies, avec leurs correctifs.
ERR_TOO_MANY_REDIRECTS apparaît quand une page renvoie sans cesse le navigateur vers une autre adresse qui finit par le renvoyer au point de départ : la chaîne ne se termine jamais et le navigateur abandonne. Les coupables habituels sont deux couches qui imposent toutes deux HTTPS ou www dans des sens opposés. Pour corriger, laissez une seule couche gérer chaque redirection.
Les boucles derrière la plupart des erreurs de trop nombreuses redirections
Boucle
Comment elle se produit
Correctif
HTTPS derrière un proxy
Le proxy parle en HTTP simple au serveur, qui redirige à nouveau vers HTTPS
Rediriger selon X-Forwarded-Proto, ou rediriger uniquement au niveau du proxy
www contre domaine nu
Une couche ajoute www, une autre le retire
Choisir un seul hôte et y rediriger depuis un seul endroit
Boucle de cookie ou de connexion
La page de connexion vous envoie vers la page du compte, qui vous renvoie car le cookie n'a jamais été enregistré
Vérifier les attributs Domain, Path et Secure du cookie
Slash final
Une règle ajoute un slash, une autre le retire
Choisir une seule forme pour chaque URL
Écrivez chaque redirection effectuée par votre site sur sa propre ligne sous la forme from -> to, saisissez l'adresse de départ, et le simulateur suit la chaîne comme le ferait un navigateur. Il s'arrête quand une adresse se répète, quand aucune règle ne correspond, ou après 20 étapes, la limite fixée par le Fetch Standard.
Listez toutes les redirections que vous connaissez : config du serveur, tableau de bord de l'hébergeur, règles du CDN, code de l'app.
Écrivez-les une par ligne, sous forme d'adresses complètes reliées par ->.
Saisissez l'adresse qui échoue dans le navigateur et lisez la liste des étapes.
Supprimez ou modifiez la règle qui renvoie la chaîne vers une adresse déjà visitée.
Effacez les cookies du site avant de tester à nouveau. Un cookie périmé peut entretenir une boucle de connexion même après correction de la config.
Les navigateurs mettent en cache les redirections 301. Testez vos correctifs dans une fenêtre privée, ou utilisez curl -I pour voir chaque réponse sans aucun cache.
Redirigez directement vers l'adresse finale. http://example.com doit aller vers https://www.example.com en une seule étape, pas en deux.
Quand un CDN ou un hébergeur propose une option pour forcer HTTPS, utilisez-la ou votre règle serveur, jamais les deux sans vérifier comment elles interagissent.
Questions fréquentes
Que signifie « vous a redirigé à de trop nombreuses reprises » ?
Ce message et le code d'erreur ERR_TOO_MANY_REDIRECTS décrivent la même chose : le site a répondu par redirection sur redirection et le navigateur a cessé de les suivre. Rien n'est cassé sur votre ordinateur, même si un cookie périmé peut faire partie de la boucle.
Combien de redirections un navigateur suit-il ?
Le Fetch Standard, que les navigateurs implémentent, renvoie une erreur réseau quand le nombre de redirections d'une requête atteint 20.
Pourquoi forcer HTTPS provoque-t-il une boucle derrière un proxy ou un CDN ?
Le visiteur se connecte en HTTPS, mais le proxy transmet la requête à votre serveur en HTTP simple. Votre serveur voit du HTTP et redirige vers HTTPS, et le cycle recommence. Cloudflare documente exactement cette boucle pour son mode de chiffrement Flexible.
Effacer les cookies corrige-t-il le problème de trop nombreuses redirections ?
Seulement quand un cookie fait partie de la boucle, par exemple une session de connexion qui n'est jamais enregistrée. Si la boucle vient des règles du serveur, effacer les cookies ne change rien.
Une boucle de redirection peut-elle nuire au SEO ?
Une page bloquée dans une boucle ne se charge jamais, donc les robots d'indexation ne peuvent pas la lire non plus. Corrigez vite les boucles et gardez des chaînes de redirection courtes.
Pourquoi les boucles naissent entre les couches
Un site moderne compte souvent trois ou quatre endroits capables de rediriger : le CDN, la plateforme d'hébergement, le serveur web et l'app. Chacun se configure sur son propre écran, si bien que deux d'entre eux peuvent être en désaccord sans bruit sur le schéma, l'hôte ou le slash final.
Le simulateur ci-dessus modélise exactement cela. Mettez les règles de toutes les couches dans la même liste et le désaccord devient un cycle visible.
Le problème du schéma derrière un proxy
Quand TLS se termine sur un proxy ou un load balancer, votre serveur ne voit jamais que du HTTP simple. Une règle qui redirige tout le trafic HTTP vers HTTPS se déclenche alors à chaque requête, y compris celles qui étaient en HTTPS pour le visiteur. Les proxys transmettent le schéma d'origine dans l'en-tête X-Forwarded-Proto : c'est ce que le serveur doit vérifier.
Une config qui redirige exactement une fois
nginx qui termine lui-même TLS
Un seul bloc server intercepte chaque requête HTTP et l'envoie directement vers l'hôte final.
nginx derrière un proxy qui termine TLS
Ne redirigez que lorsque le schéma d'origine du visiteur, transmis par le proxy dans X-Forwarded-Proto, était http.
Voir chaque étape depuis la ligne de commande
-I ne demande que les en-têtes, -L suit les redirections. Chaque bloc de la sortie correspond à une étape.
Simulateur de boucle de redirection
Règles de redirection, une par ligne (from -> to)
Adresse de départ
Étapes que suivrait le navigateur
Boucle : la chaîne revient à {v}, donc le navigateur s'arrête avec trop de redirections.
Pas de boucle : la chaîne se termine sur {v} après {n} redirections.
La chaîne a dépassé {n} étapes sans se terminer, donc le navigateur abandonne.
Aucune règle ne correspond à l'adresse de départ, elle se charge donc sans redirection.