Designdesk

L'Url Rewriting

Une leçon très simple sur l'Url Rewriting dans la pratique.

A quoi sert l'Url Rewriting ?

Générallement l'UrlRewriting (ou réécriture d'url) est utilisée pour faciliter le référencement de pages. Un moteur de recherche quelconque aura moins de mal à indexer une url de ce type:

http://monsite.tld/categorie/page

Qu'une url de ce type:

http://monsite.tld/index.php?cat=categorie&page=page

La facilité d'utilisation pour l'utilisateur final est également acrue : taper une url du deuxieme type est plus compliqué et déroutant qu'une url dite "classique"

Test de compatibilité

Tout d'abord il faut s'assurer que son hébergeur à activé le mod_rewrite (apache) ou similaire :

Créer une page nommée index.php à la racine de son site, puis créer un ficher .htaccess à la racine du site contenant :

RewriteEngine On
RewriteRule ^exemple.html$ index.php [L]

Ensuite aller sur http://votresite.tld/exemple.html
Si cela affiche le contenu de index.php vous pouvez continuer, sinon ce n'est pas possible. Changez d'hébergeur pour un autre ayant le mode activé, ou abandonnez.

Comment l'utiliser ?

C'est tres simple :

Pour transformer une url du type http://monsite.tld/index.php?cat=categorie&page=page en une url du type http://monsite.tld/categorie/page

Il faut créer un ficher .htaccess à la racine du site contenant :

RewriteEngine On
RewriteRule ^([a-z-])/([a-z0-9-])$ index.php?cat=$1&page=$2 [L]

Autres shémas:

Passer de http://monsite.tld/index.php?cat=categorie&page=45 à http://monsite.tld/categorie/45

RewriteEngine On
RewriteRule ^([a-z]+)/([0-9]+)$ index.php?cat=$1&page=$2 [L]

Passer de http://monsite.tld/index.php?page=le-nom-de-la-page157 à http://monsite.tld/le-nom-de-la-page157 (Très courant, dans un système d'include par exemple)

RewriteEngine On
RewriteRule ^(.*)$ index.php?page=$1 [L]

En expérimentant différentes combinaisons, l'apprentissage est aisé et au final cela peut être très utile.

Il est possible d'appliquer ces regles à plusieurs pages avec des règles multiples, (en gros plusieurs lignes après le RewriteEngine On).