Documentation - Url rewriting sur postnuke 0.8
Auteur Sujet

Post 
Pn 0.8 est plein de bonne surprise, en particulier au niveau de l' url rewriting qui a été entièrement retravaillé. Ainsi Postnuke propose plusieurs méthodes pour rendre ses urls plus attrayant.<div >url-rewriting.png

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 :
index.php?module=Users&func=logout

Url rewriting sans mod rewrite

Ce rewriting reproduit une arborescence de dossier "virtuel" sur votre site, les liens ressemblent à çà
Citation :
index.php/Users/logout
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 .

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 exemple
Citation :
/Users/logout
Attention 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)".

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 ...
Citation :
module-Forum-viewtopic-topic-2903-start-0.html
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.

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 addons
Citation :
function pages_userapi_encodeurl($args)
Citation :
function pages_userapi_decodeurl($args)
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".

exemple :
url-rewriting-pn.png
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
Données personnelles Accueil

Post 
s'il est possible d'activer le tag "center" (ou de centrer les images)


et/ou de mettre un petit " sur la premiére image pour mettre le texte :

Citation :
Pn 0.8 est plein de bonne surprise, en particulier au niveau de l' url rewriting qui a été entièrement retravaillé. Ainsi Postnuke propose plusieurs méthodes pour rendre ses urls plus attrayant.

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.


à droite de l'image

merci d'avance

modifié par : mumuri, 04 Fév 2008 - 13:48
Données personnelles Accueil

Post 
mumuri a écrit :
s'il est possible d'activer le tag "center" (ou de centrer les images)


center n'est pas un tag valide mais j'ai modifié en conséquence icon_wink



Chestnut !
Administrateur
Aucun Support par message privé...
Même en cas de pensée suicidaire !
Règles à suivre
Données personnelles Accueil

Post 
Super article, merci mumuri !
Données personnelles Accueil

Post 
Chestnut a écrit :
mumuri a écrit :
s'il est possible d'activer le tag "center" (ou de centrer les images)


center n'est pas un tag valide mais j'ai modifié en conséquence icon_wink


C'est bizarre mais je me doutais que çà allait pas passer ^^ (sinon activer les bbcode pour la partie "soumette une actu" çà peut être sympa et centrer la seconde image aussi )

au passage, si vous voyez quelques choses de sympa sur la 0.8, n'hésitez pas tout le monde peut poster des actus
http://www.postnuke-france.org/Submit_News.html

je dis çà parce que j'ai mis 3 ans avant de comprendre



modifié par : mumuri, 04 Fév 2008 - 21:00
Données personnelles Accueil

Post 
A noter qu'il faut que tous les modules soient compatibles, sinon cela fonctionne mal...

"Power corrupts. PowerPoint corrupts absolutely."
My personnal (french) Websites: http://www.xbee.net (0.8)
and http://fczone.xbee.net (0.764)
Données personnelles Accueil

Post 
xbee a écrit :
A noter qu'il faut que tous les modules soient compatibles, sinon cela fonctionne mal...


Si les modules sont 0.8 compliant, il ne devrait pas y avoir de soucis !

A +

Gilles


Gilles  ><>°
Données personnelles Accueil

Post 
Personnellement, mon module entièrement réécrit pour la 0.8 ne fonctionne pas correctement. Il va falloir que je code les fameuses fonctions pour cela. De plus, il y a un certain nombre de modules qui fonctionnent avec la .8 (genre pnMessage) mais pas en "short url".

"Power corrupts. PowerPoint corrupts absolutely."
My personnal (french) Websites: http://www.xbee.net (0.8)
and http://fczone.xbee.net (0.764)
Données personnelles Accueil

Post 
J'ai testé url rewriting par dossier en local et le résultat est énorme... enfin des url compréhensible pour les moteurs mais aussi pour les humains :)

Données personnelles Accueil

Post 
çà devrait en intéresser certain :)
http://noc.postnuke.com/tracker/ind...p_id=5&atid=103
Données personnelles Accueil

Post 
Très intéressant en effet, merci pour l'info mumuri, je test ça demain. icon_smile

-------------------------------------------
...n'oubliez pas que l'outil Recherche est votre ami !
...bien souvent il répond à nos questions avant même que l'on ne se les pose ! ^^
Données personnelles Accueil
Post 
Piouf, l'url rewriting en mode dossier c'est certes plus joli mais c'est pas encore très stable. Si vous ne désirez pas vous casser la tête, restez en mode fichier! icon_smile

-------------------------------------------
...n'oubliez pas que l'outil Recherche est votre ami !
...bien souvent il répond à nos questions avant même que l'on ne se les pose ! ^^
Données personnelles Accueil