Alexis Rylko - Consultant SEO

Aide-mémoire des modèles populaires pour faire une redirection 301

Chaque référenceur se heurte un jour à la nécessité de mettre en place une redirection 301. On y recourt souvent suite à un changement d’adresse de pages Web, pour lier quelques noms de domaine (par exemple ancien et nouveau), éliminer les pages dupliquées.

J’ai essayé de rassembler dans ce billet les modèles les plus populaires de redirections 301 qui permettent de résoudre des tâches courantes dans notre beau métier.

Juste 2 points avant de commencer :

  1. Etant donné qu’Apache est le serveur le plus utilisé dans le Web, toutes les modèles cités ci-dessous sont valables justement pour celui-ci, c’est-à-dire ils doivent être appliqués dans le fichier .htaccess dans le répertoire racine de votre site.
  2. Avant d’utiliser les modèles de redirections 301 rassurez-vous que le module mod_rewrite (fichier httpd.conf) est activé .
  3. Commencez par saisir dans le fichier .htaccess les directives suivantes qui sont nécessaires pour le fonctionnement du module mod_rewrite :
Options +FollowSymLinks
RewriteEngine On
RewriteBase /

Modèles populaires de redirection 301

1. Redirection depuis une adresse AVEC WWW vers celle SANS WWW.

Exemple : http://www.site.com/page1.htmlhttp://site.com/page1.html

Description: Ce modèle permet d’uniformiser les adresses URL de votre site en redirigeant toutes les pages du type http://www.site.com/page1.html vers celui-ci http://site.com/page1.html.

Modèle :

RewriteCond %{HTTP_HOST} ^www\.site\.com$ [NC]
RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]

Ou une variante simplifiée:

RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

2. Redirection depuis une adresse SANS WWW vers celle AVEC WWW.

Exemple : http://site.com/page1.htmlhttp://www.site.com/page1.html

Description: Le résultat de l’application de ce modèle est le contraire du modèle précédent et sert également à uniformiser les adresses URL du site en les redirigeant toutes vers leurs «jumelles» avec www. Le code à insérer dans le fichier .htaccess est le même sauf que vous changez la place de www :

RewriteCond %{HTTP_HOST} ^site\.com$ [NC]
RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]

Une variante alternative simplifiée:

RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

N.B. En règle générale, pour que un serveur puisse interprêter correctement les symboles de point («.»), ceux-ci doivent etre précédées d’un caractère d’échappement. Dans les deux modèles cités, cette règle est facultative, mais il est fort conseillé de s’habituer à ajouter un slash inversé («\») avant chaque symbole de point.

3. Redirection depuis la page index.php vers la racine (/).

Exemple: http://site.com/index.phphttp://site.com/

Description: Initialement, presque chaque site web a des urls dupliquées genre http://site.com/index.php, http://site.com/index.html etc. Personnellement, je préfère toujours créer une redirection 301 depuis les pages pareilles vers la page correspondante avec un slash («\»).

Modèle :

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ / [R=301,L]

Si vos pages ont une autre extension que .php, il suffit de remplacer dans le code le format «php» par le vôtre.

4. Redirection depuis un sous-domaine vers un sous-répertoire.

Exemple : http://www.en.site.comhttp://www.site.com/en/

Description : Une redirection pareille permet de rediriger de nombreuses pages du même type vers les nouvelles adresses avec une structure déterminée. Par exemple, vous avez un site en différentes langues, dont chacune est accessible en même temps à l’adresse genre http://www.en.site.com et http://www.site.com/en/. Le même contenu sur les adresses différentes c’est le contenu dupliqué qui est à éliminer.

Modèle à ajouter dans le fichier .htaccess du sous-domaine:

RewriteCond %{HTTP_HOST} ^www\.en\.site\.com [OR]
RewriteCond %{HTTP_HOST} ^en\.site\.com
RewriteRule ^(.*)$ http://www.site.com/en/$1 [L,R=301]

5. Redirection depuis un sous-répertoire vers un sous-domaine.

Exemple : http://site.com/en/http://en.site.com

Description : Le modèle à un résultat contraire du précédent : il vous sera utile si vous avez besoin de rediriger les utilisateurs depuis un sous-répertoire vers un sous-domaine.

Modèle :

RewriteCond %{HTTP_HOST} ^site\.com$ [NC]
RewriteRule ^\/en\/(.*)$ http://en.site.com/$1 [R=301,L]

6. Redirection des pages .html vers les pages .php correspondantes

Exemple : http://site.com/page.htmlhttp://site.com/page.php

Description : Ce modèle est souvent utilisé quand un site donné passe à un nouveau système de gestion de contenu qui génère les adresses URL avec une extension différente. Donc, pour qu’un internaute, en passant par un vieux lien, ne tombe pas sur la page de l’erreur 404 («Page n’est pas trouvée») il est recommandé d’accorder du temps pour ce genre de redirection. Egalement indispensable pour le SEO, pour ne pas perdre du jus se cachant dans les vieilles URL.

Modèle :

RewriteRule ^(.*)\.html$ $1.php [R=301,L]

7. Redirection vers un autre nom de domaine

Exemple : http://oldsite.comhttp://newsite.com

Description : Si vous créez un nouveau site (par exemple dans l’agence de création de site internet à Saint-Etienne (Bonjour, amis!)) avec un nouveau nom de domaine, il est souvent nécessaire de rediriger les utilisateurs de l’ancien NDD vers le nouveau. Et on n’oublie pas qu’ainsi on garde le jus précieux contenant dans le vieux site.

Le résultat de la mise en place de ce modèle : toutes les pages de l’ancien nom de domaine vont être redirigées vers les mêmes pages du nouveau.

Modèle :

RewriteCond %{HTTP_HOST} ^oldsite\.com
RewriteRule ^(.*)$ http://newsite.com/$1 [R=301,L]

8. Redirection 301 de pages dynamiques

Exemple: http://site.com/page.php?id=99http://site.com/page.html

Description: On entend de tous les côtés que les SEO Friendly URL sont profitables pour le référencement naturel. Ce modèle vous permettra de rédiriger les moches vieilles pages dynamiques (avec des paramètres ID) vers vos nouvelles pages comme il faut.

Modèle:

RewriteCond %{QUERY_STRING} ^id=99
RewriteRule ^page.php$ http://site.com/page.html? [L,R=301]

9. Redirection des pages .htm vers .html

Exemple: http://site.com/page.htmhttp://site.com/page.html

Description: Il arrive qu’à côté de l’extension principale .html, certains sites créent des pages dupliquées au format .htm. Les dernières doivent être ainsi redirigées vers les principales.

Modèle:

  • pour rediriger toutes les pages:
RewriteRule     ^(.*)\.htm$  $1.html [R=permanent]
  • pour ne rediriger qu’une seule page:
RewriteRule     ^page\.htm$  page.html [R=permanent]

10. Redirection de noms de domaine cyrilliques

Toutes les règles décrites plus haut sont valables également pour les noms de domaine en caractères cyrilliques. Toutefois, pour éviter des problèmes éventuels, il vaut mieux remplacer les appelations cyrilliques par le texte au format Punycode. Pour cela, vous pouvez utiliser le service de conversion en ligne Punycoder. Le nom de domaine obtenu de cette manière peut être utilisé facilement dans n’importe quel modèle de redirection 301 cité ci-dessus.

Si vous avez d’autres modèles de redirection 301 à proposer ou à demander, merci de l’écrire dans les commentaires. Je les ajouterai volontiers!

Alexis Rylko

22 commentaires

Répondre à societe referencement naturel Cancel reply

  • Très utiles, ces informations… Merci beaucoup, au moins on a toutes les informations nécessaires qui sont condensées dans un document !

  • Un jour j’ai tenté de faire une migration sans redirection 301, aïe ça a fait mal – une simple redirection a suffi pour résoudre le problème

  • Bonjour à tous,
    si je fait une redirection 301 du site A vers le nouveau site B
    Google après cette redirection, peut-il prendre en considération les mis à jour et les modifs sur mon site A ???
    autrement dit, si je fait quelques modification sur le meta title du site A ,Google prend en consideration ces modifications pour la page SERP??

    Merci d’avance.

  • Joli rassemblement de modèle qui peuvent effectivement toujours servir, merci !

    Par contre, il ne manque pas le fait de rediriger toutes les pages d’un domaine vers une seule et même URL ? Meme si ça peut paraître incohérent si les pages n’ont pas d’équivalence d’une page d’un domaine à l’autre, j’ai déjà eu l’occasion de le faire !

    En tout cas, très bien expliqué, merci !

  • bonjour,
    Tous les différents exemple de redirection que vous avez données sont excellente mais je crois que vous avez oublié la plus importante, le code pour la redirection d’une page html vers une nouvelle page html.

  • Bonjour,
    Premièrement, merci pour la piqure de rappel sur les différentes redirections utiles et parfois nécessaires.
    Ensuite, j’ai quand meme une question : j’ai sur mon site une redirection par défaut de http://www.monsite.com vers http://www.monsite.com/fr. Est-ce que cela peut avoir une influence négative d’avoir des liens (la majorité) vers l’url de départ ?? Malgré la 301, j’ai un doute sur la bonne transmission du jus.

  • Articles très bien fait!
    Je suis intéressé par la redirection de fiche produit d’une boutique qui disparaisse vers la catégorie des ces produits.
    Merci.

  • Aleks, juste pour te prévenir, ya un baltringue qui duplique ton article ici : h**p://www.referencement-neoconsulting.fr/Optimisation-des-sites-et-pages-internet/aide-memoire-pour-faire-une-redirection-301.html :-O

    Sinon question : j’essaie d’adapter ton modèle n°5 pour rediriger un site depuis le sous-dossier vers le domaine principal après avoir déplacé tous les fichiers mais je n’y parviens pas.

    RewriteCond %{HTTP_HOST} ^site\.com$ [NC]
    RewriteRule ^\/sous-dossier\/(.*)$ http://site.com/$1 [R=301,L]

    Quelque chose doit m’échapper mais je ne vois pas quoi. Aurais tu une piste stp ?

    • c’est bon, solution trouvée. C’était un réglage foireux sur mon serveur. 😉

  • J’ai essayé la redirection de lien dynamique mais chez Free, je tombe à chaque fois sur une erreur 500.

    J’ai testé comme ceci:

    RewriteRule ^balancedes2terres\.free.\fr\.php$ %{QUERY_STRING} [C]
    RewriteRule spip=([0-9]+) http://labalancedes2terres.info/spip$1.html [R=301]

    Comme ça :

    RewriteCond %{QUERY_STRING} ^id=99
    RewriteRule ^page.php$ http://labalancedes2terres.info/page.html? [L,R=301]

    et même comme ça :

    RewriteCond %{HTTP_HOST} ^balancedes2terres\.free\.fr
    RewriteRule ^(.*) http://labalancedes2terres.netii.net/$1 [R=301,L]

    sans succès, une idée ?

  • Clair, simple et concis. Je bosse sur un sujet qui risque d’intéresser du monde, je vous collerai un backlink dans les sources 🙂

  • Merci pour ces explications,

    cependant je cherche aussi à mettre en place une redirection dynamique, mais le ID change ) chaque fois.

    Dans l’exemple, il est défini en amont…

    Comment je peux faire pour qu’il soit dynamique ?

    Merci.

Auteur

Alexis Rylko

Consultant SEO chez iProspect France.
#Google #Yandex #Datascience