PDF Imprimer Envoyer

Redirections 301

Si vous avez déjà voulu restructurer votre site, vous vous êtes sûrement retrouvé confronté au problème suivant : toutes les pages précédemment indexées par les moteurs de recherche avec les anciennes adresses se sont retrouvées perdues dans la restructuration. Comme il est dommage de perdre une indexation qui a sûrement été fastidieuse, mettre en place une bonne redirection vers les nouvelles pages vous évitera de perdre votre ancien placement sur les moteurs de recherche.

Le principe de la redirection 301

Lorsqu'un navigateur accède a une page il échange avec le serveur des informations préalables contenues dans un header. Celui-ci contient des informations relatives au serveur, mais aussi au statut de la page. Le statut que vous connaissez sûrement est le statut 404 : page introuvable. Lorsque la page est trouvée et affichée normalement, le serveur renvoie un statut 200. Concernant les redirections, on a deux types de redirection la redirection définitive 301 et la redirection temporaire 302. Pour connaitre les autres types de statut je vous conseille de lire cette page web.

Etant donné la multitude des cas possibles, nous ne donnerons ici qu'un exemple simple. A vous de l'adapter à votre cas pour rediriger l'ensmble de vos pages. Je vous conseille de lire par exemple l'article sur la réécriture de base, ainsi que l'article sur les expressions rationnelles

Ce code est à placer dans le fichier .htaccess. Si vous arrivez sur cette page par un moteur de recherche et que vous n'êtes pas familier avec la ré-écriture d'URL, je vous conseille de consulter l'article d'introduction à l'URL Rewriting.
 
<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On
   RewriteBase /
   RewriteRule ^ancienne_adresse/page.html$ nouvel_emplacement/page.html [R=301,L]
<
/IfModule>

 

L'encapsuleur  <IfModule mod_rewrite.c> nous permet d'utiliser les instructions uniquement si mod-rewrite est activé sur votre serveur.Les trois premières lignes sont classiques et sont documentées dans l'article d'introduction. On permet juste au .htaccess de lancer le module de réécriture.

On écrit ici simplement une réécriture, achevé par un flag R=301. Le code n'est donc pas difficile si vous avez compris l'article tutorial.

Rediriger en fonction de la chaîne d'entrée :

Vous pouvez être amené à rediriger le visiteur en fonction des variables envoyé dans l'URL. Par exemple si vous changez de plateforme de forum, et que les informations sont envoyés par variable GET. Supposons que votre ancienne page soit  viewtopic.php?t=346 et que le nouveau forum est de la forme showthread.php?tid=346. Comme nous l'avons préciser dans l'article d'introduction à la réécriture, les variables ne sont pas passées par la RewriteRule. Nous devons donc ajouter une RewriteCond :

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On
   RewriteBase /
   RewriteCond %{QUERY_STRING} t=([0-9]+)
   RewriteRule ^viewtopic.php$ showthread.php?tid=%1 [R=301,L,QSA]
<
/IfModule>

On utilise ici le flag QSA en plus afin de récupérer les paramètres GET envoyés par le visiteur.

 
Mise à jour le Dimanche, 09 Novembre 2008 12:40
 

Commentaires 

 
+2 # Invité 03-07-2010 14:28
Bonjour,
j'ai essayé mais j'ai du rater une étape.
si on veut faire que http://monsite.fr/index.php soit rediriger en 301 vers http://monsite.fr
J'ai écrit
RewriteCond %{HTTP_HOST} ^monsite\.fr/index.php$ [NC]
RewriteRule (.*) http://monsite.fr/$1 [QSA,R=301,L]
Mais ça marche pô!
Répondre | Répondre en citant | Citer
 
 
0 # webmarketing 22-11-2011 15:50
Help, juste pour faire des redirections 301 d'une page vers une autres quelle est le balisage sémantique ? Merci
Répondre | Répondre en citant | Citer
 

Ajouter un Commentaire


Code de sécurité
Rafraîchir