Sleezr
Télécharger
ERR_TOO_MANY_REDIRECTS et fichier hosts : stopper la boucle

ERR_TOO_MANY_REDIRECTS et fichier hosts : stopper la boucle

É
Équipe Sleezr
··4 min de lecture

Boucle de redirection infinie (ERR_TOO_MANY_REDIRECTS) avec le fichier hosts ? Solutions pour WordPress, reverse proxy Nginx, HTTPS et cache 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 :

1
Conflit d'URL de base dans le CMS : La base de données contient 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.
2
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://....
3
Redirection www manquante dans le fichier hosts : Le serveur renvoie 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 :

BASH
curl -IL http://monprojet.test

La sortie détaille chaque saut :

TEXT
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) :

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 :

TEXT
# Configuration recommandée dans /etc/hosts :
127.0.0.1  monprojet.test www.monprojet.test

Si 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 :

NGINX
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 :

1
Ouvrez l'inspecteur web (F12 ou Cmd+Option+I).
2
Rendez-vous dans l'onglet Réseau (Network).
3
Cochez impérativement Disable cache (Désactiver le cache).
4
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é.
À lire aussiWordPress redirige vers le site en ligne : solutions
À lire aussiTester WordPress avant la propagation DNS
Partager cet article

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

3 min de lecture
WordPressredirectionmigration

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

4 min de lecture
fichier hostsERR_CONNECTION_REFUSEDDocker

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

4 min de lecture
Node.jsfichier hostspermissions

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

4 min de lecture
Node.jsDockerDNS

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

4 min de lecture
localhostdépannageERR_CONNECTION_REFUSED

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