
ERR_TOO_MANY_REDIRECTS et fichier hosts : stopper la boucle
Boucle de redirection infinie (ERR_TOO_MANY_REDIRECTS) avec le fichier hosts ? Solutions pour WordPress, reverse proxy Nginx, HTTPS et cache 301.
Gérez vos fichiers hosts sans terminal
ToggleHosts vous permet de gérer vos environnements visuellement sur Windows, macOS et Linux, avec flush DNS automatique et sauvegardes.
Paiement unique
L'erreur ERR_TOO_MANY_REDIRECTS survient lorsque le serveur web vers lequel pointe votre fichier hosts renvoie le navigateur vers une URL qui, à son tour, redirige immédiatement vers l'URL de départ. Ce phénomène de boucle infinie (statuts HTTP 301 ou 302) est courant lors de la prévisualisation d'un site de production en local ou de la migration d'un CMS comme WordPress.
Comment corriger ERR_TOO_MANY_REDIRECTS avec le fichier hosts
Pour corriger ERR_TOO_MANY_REDIRECTS avec le fichier hosts, désactivez les redirections forcées dans la configuration de votre CMS (notamment dans wp-config.php pour WordPress), configurez les en-têtes X-Forwarded-Proto sur votre reverse proxy, ajoutez les variantes avec et sans www dans /etc/hosts, et videz le cache des redirections 301 de votre navigateur.
Les causes fréquentes de la boucle avec le fichier hosts
Lorsque vous forcez un domaine à pointer vers une IP spécifique via votre fichier hosts :
- Conflit d'URL de base dans le CMS : La base de données contient
https://monprojet.com, mais vous testez enhttp://monprojet.com. Le CMS déclenche une redirection vers HTTPS, qui renvoie vers votre configuration locale non sécurisée. - Terminaison SSL asymétrique sur reverse proxy : Le reverse proxy local écoute en HTTPS mais communique en HTTP avec votre application. L'application pense être en HTTP et renvoie un en-tête
Location: https://.... - Redirection www manquante dans le fichier hosts : Le serveur renvoie
domaine.testverswww.domaine.test. Siwww.domaine.testn'est pas dans le fichier hosts, la requête part sur le DNS public et crée une rupture de cohérence.
Consultez aussi notre article sur WordPress qui redirige vers le site en ligne et comment tester WordPress avant propagation DNS.
Diagnostic rapide avec curl
Avant d'accuser le navigateur, observez la séquence de redirection exacte en ligne de commande :
curl -IL http://monprojet.testLa sortie détaille chaque saut :
HTTP/1.1 301 Moved Permanently
Location: https://monprojet.test/
HTTP/1.1 301 Moved Permanently
Location: http://monprojet.test/Ce résultat confirme la boucle entre le port 80 et le port 443.
Solutions par type de configuration
1. Correction pour un site WordPress local ou staging
Dans votre fichier wp-config.php, insérez ces lignes au tout début (avant l'inclusion de wp-settings.php) :
// Forcer les URLs sur l'hôte courant
define('WP_HOME', (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://') . $_SERVER['HTTP_HOST']);
define('WP_SITEURL', (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://') . $_SERVER['HTTP_HOST']);
// Reconnaître le SSL derrière un reverse proxy local (Nginx, Traefik, Caddy)
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}2. Déclarer systématiquement les deux variantes (avec et sans www)
Si votre serveur web possède une règle canonique dans son fichier .htaccess ou vhost :
# Configuration recommandée dans /etc/hosts :
127.0.0.1 monprojet.test www.monprojet.testSi vous oubliez la variante www, la redirection quitte votre machine locale et interroge les serveurs DNS publics.
3. Ajuster les en-têtes de Reverse Proxy (Nginx)
Si vous utilisez Nginx en frontal de conteneurs Docker ou d'un serveur Node.js, transmettez correctement le protocole d'origine :
server {
listen 80;
server_name monprojet.test www.monprojet.test;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}4. Vider le cache persistant des redirections 301
Les navigateurs comme Chrome mettent en cache les réponses 301 Moved Permanently de façon quasi permanente. Même après avoir corrigé votre code, le navigateur continue de rediriger sans interroger votre serveur.
Pour vider le cache de redirection :
- Ouvrez l'inspecteur web (
F12ouCmd+Option+I). - Rendez-vous dans l'onglet Réseau (Network).
- Cochez impérativement Disable cache (Désactiver le cache).
- Gardez l'inspecteur ouvert, faites un clic droit sur l'icône de rafraîchissement du navigateur, puis sélectionnez Vider le cache et effectuer un rechargement forcé.
Questions fréquentes
Le serveur ciblé par le fichier hosts applique une règle de redirection (HTTP vers HTTPS, avec ou sans www, ou URL du CMS) qui renvoie vers une adresse rebouclant sur elle-même.
Utilisez la commande curl -IL http://mondomaine.test dans votre terminal. Elle affiche chaque redirection HTTP (301 ou 302) avec le header Location exact sans mise en cache.
Définissez WP_HOME et WP_SITEURL dynamiquement dans votre fichier wp-config.php et forcez le paramètre HTTPS si vous êtes derrière un reverse proxy.
Oui. Si votre serveur redirige automatiquement vers la version www, les deux variantes doivent impérativement être présentes dans le fichier hosts.
Articles similaires
Corriger WordPress qui redirige vers le site en ligneWordPress
Corriger WordPress qui redirige vers le site en ligne
3 min de lecture
NET::ERR_CERT_COMMON_NAME_INVALID et fichier hosts : solutionsDépannage
NET::ERR_CERT_COMMON_NAME_INVALID et fichier hosts : solutions
4 min de lecture
EACCES: permission denied sur /etc/hosts : comment corrigerDépannage
EACCES: permission denied sur /etc/hosts : comment corriger
4 min de lecture