Trace des redirections

Un site a quatre portes d’entrée : http et https, chacune avec et sans www. Cette trace parcourt les quatre, note chaque saut et vérifie qu’elles aboutissent toutes à la même adresse HTTPS.

Ou essayez github.com, bbc.co.uk

Un site, quatre adresses

Pour une personne, tout cela ressemble au même endroit :

http://example.com/
http://www.example.com/
https://example.com/
https://www.example.com/

Un navigateur ou un robot d’indexation voit quatre origines distinctes. Le schéma peut différer, le nom d’hôte peut différer et rien dans la conception du web n’oblige ces adresses à renvoyer le même contenu. Pendant ce temps, un dépliant imprimé, un vieux favori et un lien dans un message de forum vieux de cinq ans utiliseront chacun une adresse différente.

Une redirection les relie. Le serveur saute la page et répond par un état à trois chiffres de la série 300 plus un en-tête Location qui nomme une autre adresse et le navigateur s’y rend. Un site bien tenu choisit l’une des quatre comme adresse réelle et fait répondre les trois autres par une seule redirection vers elle.

Les codes d’état qui déplacent les visiteurs

CodeSignificationÀ utiliser pour
301Déplacé définitivementHTTP vers HTTPS, www vers sans www, une page renommée. Les navigateurs le gardent en cache et les moteurs de recherche déplacent leur entrée d’index vers la nouvelle adresse.
308Permanent, méthode conservéeComme 301, mais un POST reste un POST. Courant sur les plateformes plus récentes.
302Trouvé (temporaire)Un détour par une connexion, une page de maintenance, un test A/B.
307Temporaire, méthode conservéeComme 302 pour les formulaires et les API. Les navigateurs affichent aussi un 307 pour une mise à niveau HSTS qu’ils effectuent eux-mêmes.
303Voir ailleursEnvoyer le navigateur vers une page de résultat après l’envoi d’un formulaire.

La trace affiche le code de chaque saut dans la colonne Chemin, dans l’ordre où le serveur les a renvoyés.

Comment la trace est jugée

Notre serveur interroge chacune des quatre adresses et suit jusqu’à huit redirections. La destination que la plupart atteignent est prise pour l’adresse principale du site et chaque point de départ est comparé à elle.

Adresse finale / 1 saut
La variante est l’adresse principale, ou y arrive avec une redirection. C’est ce que vous visez.
2 sauts ou plus
Une chaîne, par exemple http://www vers https://www vers https://. Elle fonctionne, mais chaque saut de plus coûte un aller-retour complet, souvent de 100 à 300 ms sur un téléphone.
Redirection temporaire
Un 302, 303 ou 307 en chemin. Quand la règle est censée être permanente, les moteurs de recherche ne savent plus quelle adresse garder.
Adresse différente
La variante aboutit ailleurs, donc le site existe en deux versions. Jugé comme une erreur.
Échec
Aucune réponse. Jugé comme une erreur pour le domaine nu et comme un avertissement pour www.

Une destination qui n’est pas en HTTPS est toujours une erreur. Sur la page finale, la trace analyse aussi le HTML à la recherche de contenu mixte, c’est-à-dire de scripts, de feuilles de style, de cadres, de cibles de formulaire, d’images et de médias encore adressés en http://. Les navigateurs bloquent les quatre premiers types, qui sont donc des erreurs, tandis que les images et les médias sont des avertissements. Enfin, elle lit le lien rel="canonical" et vous avertit s’il nomme un autre nom d’hôte que celui où mènent les redirections.

Écrire la règle une seule fois

Les chaînes apparaissent quand deux couches font chacune la moitié du travail, par exemple un panneau d’hébergement qui force HTTPS puis une extension qui retire www. Envoyez chaque variante directement vers l’adresse finale avec une seule règle.

nginx

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://example.com$request_uri;
}
server {
    listen 443 ssl;
    server_name www.example.com;
    return 301 https://example.com$request_uri;
}

Apache (.htaccess)

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]

Sur Cloudflare, activez « Always Use HTTPS » et ajoutez une règle de redirection pour le nom d’hôte. Le nom www a besoin de son propre enregistrement DNS et doit être couvert par le certificat, sinon les visiteurs n’arrivent jamais jusqu’à la redirection. L’inspecteur de certificat TLS le vérifie.

Seule la page d’accueil est tracée et seulement les redirections envoyées sous forme de codes d’état HTTP. Une redirection faite en JavaScript ou avec une balise <meta http-equiv="refresh"> n’est pas suivie et les pages plus profondes peuvent obéir à d’autres règles. Le contenu mixte est détecté dans le code source HTML, donc les ressources ajoutées plus tard par des scripts passent inaperçues.

Questions fréquentes

Quelle est la différence entre une redirection 301 et 302 ?

Un 301 dit que le déplacement est permanent. Les navigateurs s’en souviennent et les moteurs de recherche remplacent l’ancienne adresse par la nouvelle. Un 302 dit que l’adresse d’origine reste la bonne et que le détour peut prendre fin. Utilisez 301 ou 308 pour les règles HTTPS et www.

Mon site devrait-il utiliser www ou non ?

Le classement dans les recherches ne s’en soucie pas. Le domaine nu est plus court. La forme www peut être un CNAME, ce que certaines configurations de CDN et d’hébergement exigent. Ce qui compte, c’est que l’une redirige vers l’autre.

Les chaînes de redirections nuisent-elles au SEO ?

Une chaîne de deux ou trois sauts transmet encore les signaux de classement et Googlebot suit jusqu’à dix sauts au total. Ce que vous perdez, c’est de la vitesse pour chaque visiteur qui arrive par le long chemin et chaque maillon de plus dans la chaîne est une chose de plus qui peut casser.

Qu’est-ce que le contenu mixte ?

Une page HTTPS qui charge une ressource en http:// simple. Les navigateurs bloquent ces scripts, feuilles de style et cadres et essaient de mettre à niveau les images. C’est généralement un reste d’un passage à HTTPS où d’anciennes adresses sont demeurées dans le contenu.

J’ai corrigé une redirection mais mon navigateur va toujours à l’ancienne adresse. Pourquoi ?

Les navigateurs mettent les réponses 301 en cache, parfois pendant des mois. Testez dans une fenêtre privée ou avec curl -I http://example.com, ou relancez la trace ici. Notre serveur ne garde aucun cache entre deux vérifications.