Comment détecter et éviter les redirections 301 en cascade ?

Vous êtes conscient de l’importance d’optimiser votre site technique, notamment, pour bénéficier du meilleur référencement sur Google (SEO).

Vous avez donc configuré votre site WordPress pour forcer les redirections depuis HTTP vers HTTPS et/ou example.com vers www.example.com.

Dans ce cas, il est très probable que ces URLs non valides (http://example.com vs https://www.example.com) soient accessibles au travers d’une  double redirection 301 ! 

D’où proviennent les doubles redirection 301 sur WordPress ?

De base, WordPress ne crée pas de double redirections, car il permet notamment aux utilisateurs, par exemple, de visiter votre site Web avec ou sans les WWW !

Boucle de redirection, chaîne de redirections 301, etc.

Vous l’avez compris, par défaut, WordPress ne gère pas les redirections pour vous.

C’est seulement lorsqu’on cherche à intégrer Un code htaccess pour forcer son HTTPS, ou un code htaccess de Redirection depuis example.com vers www.example.com, que l’on peut se retrouver…

  • soit, au mieux, avec une double redirection 301 qui n’a pas été corrigée
  • soit, au pire, avec une erreur de type ERR_TOO_MANY_REDIRECTS
Chaine de redirection boucle en cascade : ERR_TOO_MANY_REDIRECTS

Et ne parlons pas de certains plugins de SSL / HTTPS qui peuvent aussi créer des erreurs et de multiples boucles de redirections.

Comment détecter des redirections 301 en cascade ?

La présence d’une double redirection 301 peut facilement être vérifiée via plusieurs outils en ligne.

Voici comment se présente une double 301 sur le site httpstatus.io :

httpstatus.io Status codes 301 301 200, redirects 2
Dans l’encadré orange, vous pouvez voir qu’il existe une redirection superflue.

Par acquit de conscience, nous pouvons faire un deuxième essai grâce à l’outil proposé sur le site redirect-checker.org :

Double redirection 301 Moved Permanently détectée par : redirect-checker.org
Encore une fois, dans l’encadré orange, il est possible que vous retrouviez une redirection qui pourrait être évitée ?

Le htaccess parfait pour éviter les doubles redirections 301

Suite à la demande d’un client bénéficiant de notre Support WordPress, nous avons développé un code htaccess custom permettant, grâce à des conditions htaccess claires, de gérer des redirections 301 uniques !

Hébergement cPanel : d’abord vérifier l’option “Force HTTPS Redirect”

Si vous êtes actuellement sur un Hébergement cPanel, avant de personnaliser votre fichier htaccess, veillez à  désactiver  l’option « Force HTTPS Redirect » de l’interface de gestion de Domaines de cPanel.

Désactiver Force HTTPS Redirect de l'hébergement cPanel
Désactiver Forcer HTTPS Redirect sur son Hébergement cPanel :
bien sûr, il s’agissait d’une mesure de sécurité, mais nous allons nous charger de la patcher avec notre porpe code htaccess (ci-dessous).

En effet, si celui reste activé, il viendra ajouter sa propre redirection en amont. Cela aura donc pour effet de créer une chaîne de redirections, ce que nous tentons justement d’éviter ! 😊

Éviter les chaînes de redirections pour un domaine avec WWW

Un peu plus bas, nous verrons le cas de figure d’une chaîne de redirections pour un domaine sans WWW.

Voici par exemple le code à ajouter en haut de votre fichier htaccess, pour ne voir apparaitre que des redirections permanentes uniques :

# EasyHoster custom redirections in case of 'HTTP' and/or 'missing WWW' => to HTTPS/WWW URLs

<IfModule mod_rewrite.c>
RewriteEngine on
# If !HTTPS and !WWW
RewriteCond %{HTTPS} !=on [NC]
RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

# If HTTPS and !WWW
RewriteCond %{HTTPS} =on [NC]
RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

# If !HTTPS and WWW
RewriteCond %{HTTPS} !=on [NC]
RewriteCond %{HTTP_HOST} ^www\..+$ [NC]
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

# If HTTPS and WWW
# Nothing to do here
# RewriteCond %{HTTPS} =on [NC]
# RewriteCond %{HTTP_HOST} www\..+$ [NC]
# RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
# RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

</IfModule>

Ce code parle de lui-même, et n’oubliez pas de remplacer les occurrences de example.com par votre propre Nom de domaine.

Pour que l’opération fonctionne, assurez-vous aussi que la suite de votre fichier htaccess ne contient aucun code lié à des redirections (Rewrite…), mis à part le code htaccess par défaut de WordPress (rappel ci-dessous).

# BEGIN WordPress

RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

Encore une fois, rappelez-vous que ce code n’est valide que si vous avez choisi de présenter votre site avec la version  HTTPS & WWW , comme ceci : https://www.example.com.

Éviter les chaînes de redirections pour un domaine sans WWW

Si vous avez créé un site WordPress sans les WWW, il faudra bien sûr adapter le code en conséquence.

Encore une fois, nous allons utiliser la logique des If et des Else qu’on retrouve constamment en programmation information.

# EasyHoster custom redirections in case of 'HTTP' and/or 'useless WWW' => to HTTPS/no-WWW URLs

<IfModule mod_rewrite.c>
RewriteEngine on
# If !HTTPS and !WWW
RewriteCond %{HTTPS} !=on [NC]
RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

# If HTTPS and !WWW
# Nothing to do here
# RewriteCond %{HTTPS} =on [NC]
# RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
# RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
# RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

# If !HTTPS and WWW
RewriteCond %{HTTPS} !=on [NC]
RewriteCond %{HTTP_HOST} ^www\..+$ [NC]
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

# If HTTPS and WWW
RewriteCond %{HTTPS} =on [NC]
RewriteCond %{HTTP_HOST} www\..+$ [NC]
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

</IfModule>

Dès que vous aurez intégré le code adapté à votre fichier htaccess, vous pourrez vérifier à nouveau votre site sur les outils de Check Redirect cités plus haut.

Comme vous le voyez, ce n’était si compliqué que ça ! 😊

Cela ne fonctionne pas du premier coup ?

Dans ce cas, pensez à vérifier que vous n’avez pas de redirection superflue associée directement à votre compte d’hébergement, comme nous l’avons vu ci-dessus pour l’option Force HTTPS Redirect de cPanel.

Pour rappel, si vous cherchez à éviter les chaînes de redirections pour un domaine avec WWW, c’est un peu plus haut que ça se passe ↑

Voilà !

Finalement, c’était aussi simple que d’écrire des Conditions claires (If, Else…) pour chaque cas de figure, avec une seule redirection permanente.

N’oubliez pas que vous avez trouvé la solution sur Le Blog de votre Hébergeur Web EasyHoster ! 😉

Une double redirection a-t-elle un impact négatif sur le référencement Google (SEO) ?

Malgré ces instructions, vous n’arrivez pas à éliminer les doubles 301 de votre site WordPress ? Peut-être pensez-vous qu’il faut agir d’urgence, pour ne pas pénaliser votre référencement ?

Dans ce cas, rassurez-vous…

Il faut savoir que l’immense majorité des sites WordPress (peut-être +90% ?) sont sujets à une double redirection liée au forcing du WWW & HTTPS. Faites l’essai en prenant par exemples de sites WordPress que vous avez l’habitude de visiter ou que vous trouvez régulièrement dans les résultats Google. Pour cela, utilisez par exemple les 2 outils d’analyse cités plus haut.

Ensuite, sachez que Google a officiellement déclaré en février 2014 que son Googbot suivait jusqu’à 5 redirections avant de « Give Up », c’est-à-dire, « abandonner ».

Enfin, les doubles redirections ne concernent probablement pas l’URL d’accès principale à vos pages. Par exemple : https://www.example.com/page/. Les doubles redirections (pas “triples” ou “quadruples”, juste… “doubles”), ne sont présentes que lorsqu’on visite une URL exotique telle que http://example.com/page. Et bien sûr, a priori, votre site ne contient aucun lien vers des URLs erronées comme celle-ci, sans HTTPS & WWW.

Sinon, pensez à les corriger avec un plugin tel que Better Search Replace.

Bien sûr, vous souhaitez que votre site WordPress soit optimisé Au plus que parfait pour votre référencement Google. Mais gardez à l’esprit que Google a l’habitude de voir des sites WordPress qui font une redirection (non pas “simple”, mais “double”), pour les URLs qui ont été mal recopiées par les utilisateurs. C’est-à-dire, les versions sans WWW ou HTTPS.

Finalement, cette optimisation n’a pas un potentiel extraordinaire pour mieux vous positionner sur Google. Mais cela fait toujours plaisir d’obtenir de bons résultats sur les outils d’analyse 😉

EasyHoster est bien plus qu’un hébergeur ! 🍌

À la recherche de (+) qu’un Hébergeur Web honnête, qui ne vous laisse pas tomber avec WordPress ou votre SEO ?

Hébergement cPanel avec support WordPress

Découvrez les nombreux services inclus dans nos solutions d’Hébergement WordPress, ainsi que les caractéristiques de nos Hébergements Web Premium (suivez les liens précédents 😇).

Sommaire de ce billet
Besoin d'aide ?

Le site WordPress speed.easyhoster.net ➚ permet de tester le potentiel des solutions d'Hébergement Web EasyHoster.