Gaston

Un gaffeur du web

L’art de l’URL rewriting

Posté par Gaston le 11-juil-2007

L’URL rewriting permet d’avoir des Urls plus explicites. Pourquoi ? Tout simplement pour se faire mieux indexer par Google ou un autre moteur de recherche.
Si l’adresse contient trop de paramètres, le moteur aura du mal à indexer la page correctement. De plus, celui-ci ne regarde pas seulement le contenu de chaque page, il regarde aussi le nom du fichier, le titre du lien pointant vers une page. On a donc tout intérêt à re écrire toutes les URLs pour faire ressortir les mots clefs importants de la page.

Un exemple :

index.php?category=3&article=23

Dans cet exemple, on peut voir que deux paramètres sont utilisés. C’est peu mais c’est juste un exemple. On pourrait alors écrire l’URL de cette façon :

affichage-3-23.html

C’est bien pour que le moteur de recherche n’ai pas trop de variables à observer mais ce n’est pas encore très explicite.
Voici un exemple un peu plus parlant et surtout pratique :

affichage-3-23-un-alias-pour-cette-article.html

On remarque alors que dans cette adresse, il y a toutes les information nécessaires.

Bon dans la théorie, c’est plutôt pas mal. En concret ça donne quoi ?
Pour la suite, on imaginera que vous utilisez apache avec le mod-rewrite d’activer.

Première étape : création d’un fichier .htaccess

On doit créer un fichier .htaccess pour permettre de donner des indications au serveur pour savoir ce qu’il doit faire avec ces URLs. Les première lignes commenceront par :

Options +FollowSymlinks
RewriteEngine on

Ca indique à Apache que la redirection doit être activer.

Deuxième étape, on applique des règles.
On utilisera ici une règle de re écriture (RewriteRule en anglais).
La syntaxe est la suivante : RewriteRule URL-explicite URL-source [flag]

Dans notre premier cas, ce sera :

RewriteRule ^affichage-([0-9]+)-([0-9]+)\.html$ index.php?category=$1&article=$2 [L]

[0-9]+ permet de prendre en compte tous les nombres entre 0 et 9 et de les répéter autant de fois que l’on veut.
On se sert ensuite de $1 et $2 pour récupérer les variables.
Le flag L nous permet de dire que la re écriture est finie, une suivante commence après.

Voyons maintenant le deuxième exemple. La solution serait :

RewriteRule ^affichage-([0-9]+)-([0-9]+)(.*)\.html$ index.php?category=$1&article=$2 [L]

On peut remarquer que l’on a tout simplement rajouter (.*) avant le .html ce qui nous permet de mettre tous les mots que l’on veut.
On pourra utiliser cet espace pour mettre des mots clefs ou mettre l’allias du titre de l’article, à vous de décider. Sachez juste que cet espace n’aura aucune incidence sur l’affichage de la page.

Ajouter un commentaire