La réécriture des url (alias url rewriting)... suite
Par Yves Tannier le jeudi, novembre 27 2003, 11:32 - Le PHP - Lien permanent
Dans un blog récent, j'expliquais comment créer un site intégrant la gestion de l'url rewriting. Voici la suite de ce billet.
On a vu qu'il était simple de préparer un site à la réécriture d'url. Maintenant imaginons que le site en question ce décline en plusieurs langues. Sur ce site, on passe le paramètre "lang" dans l'url, de page en page (il est bien évident que nous aurions pu également imaginer un système de cookies ou de session pour la gestion de la langue, mais là c'est pour l'exemple sur l'url rewriting...).
Donc, avec une url standard, on aura un lien de la forme welcome.php?lang=fr
. Avec l'url rewriting, on souhaitera bien entendu obtenir un lien de la forme welcome-fr.html
.
Rien de plus simple, on a déjà noté nos url en variable dans le fichier conf.php, il suffit donc de leur rajouter le paramètre de langue qui se traduit par la variable $lang.
Voici la définition d'une variable correspondante au nom de la page dans le fichier conf.php (j'ai gardé le avec/sans url rewriting comme dans le billet précédent, la version sans rewriting étant commentée dans le code source)
Notez également qu'une des grandes différences avec le premier exemple, c'est qu'on ne peut pas utiliser define() car cela définit une constante. Dans la gestion des langues, les pages n'ont pas un nom "constant" puisque, la page d'accueil peut s'appeler welcome-fr.html
, welcome-en.html
... Vous me suivez ?!
Sans la gestion des langues
// sans url rewriting
/*$page_d'accueil = "welcome.php";*/
// avec url rewriting actif
$page_d'accueil = "welcome.html";
Et le résultat avec la gestion de la langue
// sans url rewriting
/*$page_d'accueil = "welcome.php?lang=".$lang;*/
// avec url rewriting actif
$page_d'accueil = "welcome-".$lang.".html";
Ensuite, dans notre fichier .htaccess, on aura :
Sans la gestion de la langue
RewriteRule ^welcome.html$ welcome.php [QSA,L]
Et le résultat avec la gestion de la langue
RewriteRule ^welcome-([a-z]+)\.html$ welcome.php?lang=$1 [QSA,L]
Et voilà de belles url 
La prochaine fois, je vous explique comment créer des "répertoires virtuels" (pas comme ceux d'Apache) avec la réécriture d'url.
Commentaires