Source ::
Titre :: Faire une redirection 301 des anciennes urls vers celle réécrites via .htaccess
Catégorie :: Redirection
URL de l'article :: /faire-une-redirection-301-des-anciennes-urls-vers-celle-reecrites-via-htaccess_9.html
Auteur de l'article :: forty
Date d'enregistrement de l'article :: 17 Juil 2008
Description :: La technique de l’url rewriting a de nombreux avantages comme celui d’ajouter des mots clé dans l’url. Sa mise en place peut malheureusement être la cause de duplicate content (deux urls différentes ayant le même contenu). Les moteurs de recherche comme google peuvent sanctionner votre site dans ce cas. Il faut donc être vigilant et faire une redirection permanente (redirection 301) des anciennes urls vers les celles réécrites. Ainsi les anciennes urls sont désindexées des moteurs et remplacées par celles réécrites.

Prenons pour un exemple un cas de réécriture classique et nous procéderons ensuite aux redirection 301.

Avec fichier.php?id=1 réécrit en article-1.html, notre règle devrait avoir cette forme :




Faire une redirection 301 des anciennes urls vers celle réécrites via .htaccess


La technique de l’url rewriting a de nombreux avantages comme celui d’ajouter des mots clé dans l’url. Sa mise en place peut malheureusement être la cause de <strong>duplicate content</strong> (deux urls différentes ayant le même contenu). Les moteurs de recherche comme google peuvent sanctionner votre site dans ce cas. Il faut donc être vigilant et faire une redirection permanente (redirection 301) des anciennes urls vers les celles réécrites. Ainsi les anciennes urls sont <strong>désindexées des moteurs</strong> et remplacées par celles réécrites.

Prenons pour un exemple un cas de réécriture classique et nous procéderons ensuite aux redirection 301.

Avec <i>fichier.php?id=1</i> réécrit en <i>article-1.html</i>, notre règle devrait avoir cette forme : 


RewriteEngine on
RewriteRule ^fichier-([0-9]+)\.html$ /fichier.php?id=$1 [L]

Maintenant ajoutons notre redirection 301 pour rediriger article.php?id=1 vers article-1.html. Pour faire cela, nous allons commencer par chercher l’Uri puis faire une redirection :
RewriteEngine on
RewriteCond %{QUERY_STRING} ^id=(.*)$
RewriteRule ^fichier\.php$ /fichier-%1.html? [R=301,L]

Attention à ne pas oublier le ? à la fin sinon le paramètre id=1 va être ajoutés à notre url réécrite automatiquement. Le %1 représente la rétroréférence correspondant à la capture de l'id avec la directive RewriteCond.

Maintenant nous devons joindre ces deux règles tout en évitant de faire une boucle infinie. L’astuce consiste pour éviter de boucler d’ajouter un paramètre "rewriting" inutile mais qui évitera le premier test de redirection. Astucieux n’est-ce pas ?? et sans danger ;)

RewriteEngine on

RewriteCond %{QUERY_STRING} ^id=(.*)$
RewriteCond %{QUERY_STRING} !^(.*&)?rewriting(&.*)?$
RewriteRule ^fichier\.php$ /fichier-%1.html? [R=301,L]

RewriteRule ^fichier-([0-9]+)\.html$ /fichier.php?id=$1&rewriting [L]

Dans le cas ou nous avons ajouté des mots clé dans notre url réécrite cette méthode ne marche plus.

Voyez avec PHP pour les solutions de redirections avec un ou plusieurs arguments dans vos urls : finalisation 301.