L’url rewriting sans mod_rewrite

    22:25 21 11 2005

Une des fonctionnalités puissantes du serveur web Apache est l’URL rewriting. Cela permet de remplacer des URL complexes du genre

mapage.php?var1=toto&var2=titi

par quelque chose de plus compréhensible pour les moteurs de recherche comme

toto_et_titi.php

L’intérêt principal est d’optimiser son référencement et donc d’avoir des pages mieux placées dans les résultats de recherches. Pour pouvoir utiliser ces fonctionnalités, il faut disposer du module mod_rewrite dans Apache.

Je disais donc, c’est très puissant, mais malheureusement, ce module n’est pas toujours disponible, et si vous n’êtes pas root du serveur, vous n’aurez sûrement pas la possibilité de l’installer.

Plusieurs astuces permettent toutefois d’avoir le même comportement sans pour autant utiliser le mod_rewrite.

Une des solutions consiste à se baser sur la directive FilesMatch d’Apache. Cette directive peut être utilisée localement dans un répertoire grâce à un fichier ‘.htaccess’. Elle permet d’associer un comportement particulier en fonction d’une contrainte définie grâce à une expression régulière. Oulla, par très clair tout ça. Pour simplifier,

« Si l’URL demandée correspond à cette contrainte alors appliquer ce comportement ».

L’idée est de rediriger l’appel vers un script php si un répertoire se trouve dans l’URL. En fait ce répertoire n’existe pas, par contre un fichier portant le même nom existe lui et contient du code PHP à exécuter.

Mmm, toujours pas clair? Bon passons aux travaux pratiques ce sera peut être mieux :

Je créé un fichier ‘.htaccess’ à la racine de mon site. Dedans je mets :

<filesmatch « ^formations$ »>
ForceType application/x-httpd-php
</filesmatch>

Maintenant, je créé un fichier formation (sans extension) et je mets du code PHP dedans. On pourra, par exemple, analyser l’url courante ($_SERVER['REQUEST_URI']) et faire un include en fonction de celle-ci.

Lorsque j’appellerais l’url http://monsite/formations/toto.php, c’est en fait le fichier formations qui sera exécuté en tant que PHP. Voilà, le tour est joué!

Vous n’avez toujours rien compris??? Mais vous êtes nuls! Je rigole bien sûr. Bon, je viens de trouver une page sur developpez.com qui explique la même chose (et bien d’autres choses) mais en mieux :D :

Solution en clair

J’utilise personnellement cette solution sur un serveur où je n’ai pas la main, ça marche très bien et me permet d’avoir de très bons résultats sur Google.


Actions

Informations

5 réponses à “L’url rewriting sans mod_rewrite”

24 11 2005
Yeca (15:35:48) :

C’est très intéréssant ça. Merci.

7 02 2007
Tom Miller (00:58:42) :

Merci pour l’article !

Tom Miller
j’adore votre site !

8 06 2007
health care products (05:14:22) :

health care products…

matrimony Pompeii battleground …

2 06 2008
e2sap (13:56:40) :

Il y a aussi une technique utilisant les pages d’erreur 404 expliquée ici : http://www.urlrewriting.fr/tutoriel-urlrewriting-sans-moteur-rewrite.htm

30 10 2008
Jice (13:27:12) :

Pas mal comme astuce, moi aussi je « favorise »