|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Jean Développeur Web Inscription : décembre 2011 Messages : 2 ![]() |
Bonsoir tout le monde,
Voici pour les plus courageux d'entre vous un petit problème qui m'a coûté une bonne demie journée de cassage de tête. Par souci esthétique, je souhaiterais réécrire les url d'un dokuwiki utilisé en interne. Pour rappel, la syntaxe de base de ce wiki est : http://monwiki/wiki/doku.php?id=dev:cdc:portail pour accéder à la page portail, explicitement localisée dans le namespace cdc, lui même situé dans le namespace dev. Il n'y a pas de limite de namespaces/sous-namespaces. L'idée est de transformer ceci en : http://monwiki/dev/cdc/portail. Certes, DokuWiki propose d'implémenter une réécriture aboutissant à http://monwiki/dev:cdc:portail (on devine la complexité de la RewriteRule associée Je peux facilement résoudre le problème en proposant 5-6 règles de réécriture, chacune couvrant un nombre de paramètres précis, comme suit : Code :
Puisqu'il s'agit d'un wiki existant et non d'une application écrite de toute pièce, je souhaiterais éviter tant que possible de toucher au code source et donc ne pas implémenter la solution inhérente à une appli Zend par exemple (réécriture de toute url en index.php, qui se charge ensuite de lire l'URI requêtée ($_SERVER['REQUEST_URI']) et de déduire les variables). Je souhaite donc imiter le comportement http://monsite/application/controleu...n/param/valeur etc... de Zend mais uniquement avec des RewriteRule (et éventuellement des Cond, Map, Base, tout ce qui vous semblera utile). La meilleure approche est selon moi de boucler sur un règle de réécriture du premier "dossier" passé en un premier argument, puis du deuxième etc... de façon à ce que l'URI a/b/c/d/e/f devienne successivement : b/c/d/e/f/doku.php?id=a c/d/e/f/doku.php?id=a:b d/e/f/doku.php?id=a:b:c e/f/doku.php?id=a:b:c:d f/doku.php?id=a:b:c:d:e et finalement doku.php?id=a:b:c:d:e:f Voilà le fruit de ma tempête intellectuelle et de mes recherches, commenté comme j'ai pu : Code :
Je viens donc vous demander de l'aide parce que je ne vois plus comment procéder et surtout où est la boucle infinie. PS : le cas du paramètre unique est pour l'instant ignoré mais ne me semble pas très compliqué dans la mesure où le masque est assez restrictif, il suffit la règle de réécriture quelque part avant la fin et le tour sera joué, du moins je crois. Merci par avance, Jean |
||||
|
|
00
|
|
|
#2 | ||
![]() ![]() Inscription : août 2005 Messages : 8 299 ![]() |
Pour travailler sur la query string, il faut utiliser une RewriteCond. Exemple :
Code :
__________________
![]() Du détail, du détail, du détail !!! Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
|
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Jean Développeur Web Inscription : décembre 2011 Messages : 2 ![]() |
Merci Mac pour cette réponse !
Malheureusement je n'aurai pas l'occasion de la tester, puisque le problème est, dans ce cas précis, tout résolu en allant fouiller un peu plus loin dans la doc de DokuWiki : il s'agit de l'option useslash qu'il faut mettre à 1 pour remplacer les ':' par des '/' et ainsi générer de magnifiques URI porteuses de sens et dépourvues d'informations parasites. A bientôt peut-être. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com