
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.
Sommaire
- Comment corriger ERR_TOO_MANY_REDIRECTS avec le fichier hosts
- Les causes fréquentes de la boucle avec le fichier hosts
- Diagnostic rapide avec curl
- Solutions par type de configuration
- 1. Correction pour un site WordPress local ou staging
- 2. Déclarer systématiquement les deux variantes (avec et sans www)
- 3. Ajuster les en-têtes de Reverse Proxy (Nginx)
- 4. Vider le cache persistant des redirections 301
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 :
https://monprojet.com, mais vous testez en http://monprojet.com. Le CMS déclenche une redirection vers HTTPS, qui renvoie vers votre configuration locale non sécurisée.Location: https://....domaine.test vers www.domaine.test. Si www.domaine.test n'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 :
F12 ou Cmd+Option+I).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 ligne
WordPress redirige vers le site en ligne quand on teste un nouveau serveur car l’URL est codée en dur dans la base. Corrigez-le avec le fichier hosts, sans éditer la base.
Équipe Sleezr
Outils développeurs
ERR_CONNECTION_REFUSED sur un domaine du fichier hosts : solutions
Votre domaine personnalisé dans le fichier hosts renvoie ERR_CONNECTION_REFUSED ? Vérifiez le port, le binding 0.0.0.0 vs 127.0.0.1, Docker et le reverse proxy.
Équipe Sleezr
Outils développeurs
NET::ERR_CERT_COMMON_NAME_INVALID et fichier hosts : solutions
Corrigez NET::ERR_CERT_COMMON_NAME_INVALID quand vous faites pointer un domaine avec le fichier hosts. mkcert, SAN, SSL local et HSTS expliqués.
Équipe Sleezr
Outils développeurs
EACCES: permission denied sur /etc/hosts : comment corriger
Corrigez l’erreur EACCES permission denied sur /etc/hosts en Node.js, bash et sous Windows. Droits root, sudoers, scripts CLI et solutions sécurisées.
Équipe Sleezr
Outils développeurs
getaddrinfo ENOTFOUND dans Docker et Node.js : solutions
getaddrinfo ENOTFOUND ou EAI_AGAIN malgré une entrée dans /etc/hosts ? Résolvez l’isolation DNS Docker, le binding Node.js et les erreurs libc.
Équipe Sleezr
Outils développeurs
Localhost n’autorise pas la connexion : comment corriger
Corrigez « localhost n’autorise pas la connexion » (ERR_CONNECTION_REFUSED) dans Chrome, sous Windows, Mac, XAMPP et VS Code : serveur, port, IPv6 vs IPv4, fichier hosts, pare-feu.
Équipe Sleezr
Outils développeurs