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!

21 replies on “Aide-mémoire des modèles populaires pour faire une redirection 301

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *