
Principe de fonctionnement du mod rewrite</div>
Rappelons tout d'abord, que l'url rewriting est un module activable dans Apache et permettant de réécrire les liens d'un site de façon à en simplifier la lecture.
L'idée c'est qu'ils ont aussi pensé que le mod rewrite n'était pas forcément disponible/activé sur tous les types d'hébergement ( en particulier sur les serveurs Windows). Pour çà, l'équipe Postnuke propose des rewritings basé sur des "ruses de sioux" déjà massivement utilisé dans les systèmes de gestion de blog.Passons au détails; avant de commencer, voila la tête d'un lien sans rewrite.
Citation :
Url rewriting sans mod rewrite
Ce rewriting reproduit une arborescence de dossier "virtuel" sur votre site, les liens ressemblent à çàAu niveau du fonctionnement, c'est très simple, quand votre serveur Web reçoit une requête pour un lien dans ce genre, là, il charge instinctivement la page "index.html". Dans cette index.php, justement, les paramètres de la requêtes sont récupéré via l'entête de celle ci (regarder sur un "phpInfo", il y a un champ $_SERVER['REQUEST_URI'] qui correspond à cette information). Reste plus qu'à interpréter ces paramétres, entre les deux premiers "/", on trouve le nom du module, entre les deux autres, le nom de la fonction. A partir de là, la machinerie est lancé est le core de postnuke sait quel module et quelle fonctions lancer.Il est bien sûr possible de passer des paramétres, par exemple, une requête permettant de charger une section d'un forum d'id 2 ressemblera à çà : "index.php/Forum/viewforum/forum:2".Notez que cette url rewriting utilise des ":" pour représenter les paramètres dans un url, .... ce qui interdit de passer une variable du type index.php?text=mon:fichier . C'est particulièrement embêtant pour Pagesetter et son système de filtre .Citation :
Url rewriting avec mod rewrite
optimisation de la version précédente
Dans le précédent exemple, toutes les liens rewrités contiennent "index.html" ... et c'est moche, sans compter que fonctionnellement ce fichier n'apporte aucune information utile pour charger le module et la fonction demandé.L'astuce est utile quand on a pas de mod rewrite, mais si l'on dispose d'un serveur apache équipé, autant ne pas se priver. En effet, l'équipe PN propose aussi une version "allégé" de ce rewriting sans le "index.html"en voici un exempleAttention par contre si une de vos images est écrite de cette façon <img src=test.png> et que vous avez charger la page /MonModule/main/. C'est "/MonModule/main/test.png" qui va être rechercher. Remarquez que vous devez pouvoir faire un rewriting permettant de rediriger toutes les liens de la forme " /*/*/*.(jpg|png|gif)" vers "$3.(jpg|png|gif)".Citation :
en mode fichier
Cette url rewriting est la version classique, déjà utilisé dans les versions précédentes du cms, on a fait du rewriting de dossier, là c'est du rewriting de fichier autrement dit des liens sont des listes de mots (nom du module, nom de la fonction ) séparé par des tirets. Remarquez que cette version utilise un grand nombre de régle de rewrite comparé à ces confréres, ce qui risque d'alourdir la charge de votre serveur Web.une exemple ici ...Notez que le "module" dont on pourrait croire qu'il ne sert à rien, est en faites du au support de la gestion de l'ancienne méthode de chargement des modules.Citation :
url rewriting customisé
Alors çà c'est une premiére, cette fonctionnalité vous permet de customiser l'url rewriting en fonction du module considéré.il vous suffit de créer une fonction "encodeurl" dans la partie API de votre module qui prend en paramètres les informations sur le lien pour avoir en sortie un lien rewrité et complètement customisé .Ensuite, au chargement de chaque page du CMS , on regarde si pour le module considéré une fonction "decodeurl" est présente, si c'est le cas cette fonction se charge de retranscrire l'url encodé sous une forme compréhensible par le CMS.Vous trouverez un exemple de l'utilisation de cette méthode dans le module "Pages" des values addonsCitation :
Cette fonctionnalité est intéréssante car elle permet d'avoir la main sur vos url, non seulement avant le chargement de la page, mais aussi aprés le chargement de cette page, vous autorisant ainsi des post traitement plutôt intéréssant.Cette méthode permet entre autre de :- mettre des titres dans les urls- n'avoir qu'une seul version de votre url rewrité En effet,via le post traitement vous pouvez recalculer l'url et s'il n'est pas conforme à vos exigences, vous redirigez vers le bon lien via une redirection 301 "Moved Permanently".Citation :
exemple :
Cas d'utilisation d'un url rewriting "no duplicate"
Notes : Un petit problème néanmoins quand à l'utilisation de ce rewriting, il est limité au url de type "user". J'ai soumis une demande de patch sur la noc (plus de détails ici)
Lien vers l'Article
English translation
modifié par : mumuri, 26 Fév 2008 - 09:26






