Les visiteurs passent par plusieurs redirections avant la page
Instructions générales. Ouvrez cet article depuis votre rapport PageCheck pour le voir complété avec les chaînes de redirections trouvées sur votre site et la règle pour votre hébergement (Cloudflare, Plesk, cPanel, Apache ou nginx).
De quoi s’agit-il
Un site web a quatre adresses racines : avec et sans www, en http:// et en https://. Les visiteurs tapent n'importe laquelle, les anciens liens et les résultats de recherche pointent vers n'importe laquelle. Une seule sert la page ; les trois autres devraient y envoyer le visiteur par une seule redirection permanente (301), directement vers l'adresse https:// et jamais via http:// en chemin.
Chaque redirection supplémentaire est un aller-retour complet vers le serveur avant même que la page puisse commencer à se charger, et Google n'en demande pas plus d'une. Un saut de https:// vers http:// place un premier visiteur sur une connexion non chiffrée que n'importe qui sur le même réseau peut lire ou détourner.
Ce qui ne va pas
Une ou plusieurs adresses racines nécessitent deux redirections ou plus pour atteindre la page, passent par du http:// non chiffré en chemin, utilisent une redirection temporaire, aboutissent à un autre site web ou n'atteignent jamais de page.
Comment corriger
1. Choisissez l'adresse finale unique et vérifiez que HTTPS fonctionne sur chaque nom.
La page est servie à https://example.com ; c'est donc l'adresse vers laquelle toutes les autres doivent pointer. Avant d'ajouter une redirection, ouvrez https:// sur l'autre nom (www.example.com) dans un navigateur : il ne doit afficher aucun avertissement de certificat. Les certificats Let's Encrypt et Cloudflare couvrent les deux noms lorsque les deux sont listés ; s'il en manque un, ajoutez-le d'abord au certificat, sinon chaque redirection depuis ce nom commencera par un avertissement.
2. Mettez en place une seule redirection permanente de chaque autre adresse racine directement vers l'adresse finale. Utilisez la règle correspondant à l'endroit où votre site répond (votre hébergeur peut vous le dire) : une seule règle qui traite le schéma et le www dans la même étape, pas deux règles l'une après l'autre. Utilisez un 301, jamais un 302 ou 307, et conservez le chemin et la chaîne de requête.
Apache ou LiteSpeed (aussi les hébergements Plesk et cPanel avec Apache) : dans le fichier .htaccess du dossier principal du site, au-dessus de la ligne « # BEGIN WordPress »
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]nginx : les blocs server du site
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name www.example.com;
# the certificate must cover www.example.com
return 301 https://example.com$request_uri;
}Cloudflare, si le site est derrière lui : Rules → Redirect Rules → Create rule
When incoming requests match (custom filter expression):
http.host eq "www.example.com"
Then: Dynamic redirect, status code 301, preserve query string:
concat("https://example.com", http.request.uri.path) -
Plesk : Websites & Domains → Hosting Settings : réglez « Preferred domain » sur la forme choisie (
https://example.com) et cochez « Permanent SEO-safe 301 redirect from HTTP to HTTPS ». Plesk envoie alors chaque autre adresse racine vers l'adresse finale en une seule étape. - cPanel : Domains → Redirects : une redirection permanente (301) avec joker de l'autre nom vers l'adresse finale, « Redirect with or without www », ou la règle .htaccess ci-dessus.
- Si un CDN ou un répartiteur de charge termine le HTTPS devant le serveur, le serveur ne voit que du http:// et la règle .htaccess ci-dessus boucle. Testez l'en-tête « X-Forwarded-Proto » au lieu de %{HTTPS}, ou définissez la redirection au niveau du CDN comme avec Cloudflare.
- Supprimez ensuite toute autre règle de redirection pour ces adresses (un ancien plugin « forcer HTTPS », une seconde redirection du panneau de contrôle) : ce sont deux règles qui produisent deux sauts.
3. Dites aux navigateurs d'utiliser https:// dès le départ.
Une fois que https:// fonctionne sur les deux noms, envoyez l'en-tête Strict-Transport-Security: max-age=31536000; includeSubDomains sur les deux. Un navigateur qui a visité le site une fois n'essaie alors plus jamais http://, et le saut http:// disparaît pour les visiteurs qui reviennent. Ajoutez « preload » et soumettez le domaine sur hstspreload.org seulement lorsque chaque sous-domaine fonctionne en HTTPS.
4. Vérifier. Demandez à chaque adresse racine sa première réponse : toutes sauf l'adresse finale doivent répondre 301 avec l'adresse finale dans « location », et l'adresse finale doit répondre 200 :
Dans un terminal
curl -sI http://www.example.com/ | grep -i '^HTTP\|^location' curl -sI https://www.example.com/ | grep -i '^HTTP\|^location' curl -sI http://example.com/ | grep -i '^HTTP\|^location' curl -sI https://example.com/ | grep -i '^HTTP\|^location'
Relancez ensuite cette vérification : elle suit les quatre adresses et liste chaque saut.
Make every root address of my website reach the page in one permanent redirect: http://www.example.com/, https://www.example.com/ and http://example.com/ must each answer 301 straight to https://example.com (same path and query), never via http:// on the way, and https://example.com/ must answer 200.
The site is not known to be behind a CDN.
Steps:
1. Make sure the certificate covers example.com and www.example.com (no warning on https:// for either name).
2. Replace all existing redirect rules for these addresses with ONE rule that handles scheme and host in the same step: on Cloudflare a Single Redirect `http.host eq "www.example.com"` → `concat("https://example.com", http.request.uri.path)` (301, preserve query string) with Always Use HTTPS left on; on Apache/LiteSpeed a RewriteCond %{HTTPS} off [OR] / RewriteCond %{HTTP_HOST} ^www\.example\.com$ / RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L] block above # BEGIN WordPress; on nginx a port-80 server block for both names and a port-443 block for www.example.com, each `return 301 https://example.com$request_uri;`. Behind a TLS-terminating proxy test X-Forwarded-Proto, not %{HTTPS}.
3. Remove the other rules (control panel redirects, force-HTTPS / force-www plugins) so no address takes two hops.
4. Send `Strict-Transport-Security: max-age=31536000; includeSubDomains` on both names once https:// works on both.
5. Verify with curl -sI on all four root addresses: three answer 301 with location https://example.com/… in one hop, the final one 200; show me the output.
Tell me exactly which files or settings you changed.
Resources:
- Google Search Central, redirects and Google Search: https://developers.google.com/search/docs/crawling-indexing/301-redirects
- Cloudflare, Single Redirects: https://developers.cloudflare.com/rules/url-forwarding/single-redirects/
Objet : example.com – merci de faire rediriger chaque adresse du site vers l'adresse finale en une seule étape Bonjour, Une vérification du site (PageCheck) a constaté que les adresses racines de notre site (avec et sans www, http:// et https://) n'atteignent pas toutes la page en une seule redirection permanente. La page est servie à https://example.com. Merci de : 1. Vérifiez que le certificat HTTPS couvre à la fois le nom avec www et le nom sans www. 2. Mettez en place une seule redirection permanente (301) de chacune des autres adresses racines directement vers https://example.com, en conservant le chemin, et supprimez toute autre règle de redirection pour elles (afin qu'aucune adresse ne prenne deux sauts et qu'aucune ne passe par http://). 3. Envoyez l'en-tête Strict-Transport-Security sur les deux noms. 4. Vérifiez que chaque adresse racine répond 301 vers l'adresse finale en une seule étape, et que l'adresse finale répond 200. Ressources : - Google Search Central, redirects: https://developers.google.com/search/docs/crawling-indexing/301-redirects Merci beaucoup !
Analysez votre site pour savoir s’il a ce problème. Analyser un site