meta données pour cette page
Ceci est une ancienne révision du document !
Beaux URL et rewriterules
Ou comment obtenir de beaux URL même lorsqu'on n'a pas accès à la configuration d'apache.
Cette page explique pas à pas comment transformer en quelques étapes les URL de votre DokuWiki chez free :
- http://login.free.fr/doku.php?id=:demo:pagemod:demo1
- http://login.free.fr/doku.php/demo:pagemod:demo1
- http://login.free.fr/doku/demo:pagemod:demo1
- http://login.free.fr/wiki/demo:pagemod:demo1
- http://login.free.fr/wiki/demo/pagemod/demo1
Par défaut, dokuwiki fait des URL laids et mal indexés par les moteurs de recherche. Dokuwiki propose deux méthodes de réécriture pour obtenir des URL plus jolis. Quand on peut modifier la configuration d'Apache (ou d'autre serveur web), il n'y a qu'à suivre la documentation officielle sur fr:rewrite.
Chez free.fr on ne peut pas modifier suffisamment la configuration d'Apache. Les réglages du fichier .htaccess
fourni avec dokuwiki ne sont pas pris en compte. Il ne reste donc qu'une seule méthode de réécriture, ce qui permet d'améliorer tout de même considérablement la situation. En changeant le paramètre userewrite à dokuwiki
, on passe d'URL très laids tels que http://login.free.fr/dokuwiki/doku.php?id=wiki:syntax
à des URL presque convenables comme celui là : http://login.free.fr/dokuwiki/doku.php/wiki:syntax
.
Mais il reste encore et toujours ce fichu doku.php
dans le bazar. Il n'est pas possible de le faire disparaitre entièrement, mais on peut tout de même enlever le .php
si vilain. On peut également changer le nom, utiliser d
par exemple ou sbouirtkx
si on veut à la place de doku
; mais je préfère d
, allez savoir pourquoi. Il faut juste ruser un peu.
exemples de renommage | |
---|---|
avant | après |
http://login.free.fr/dokuwiki/doku.php/wiki:syntax | http://login.free.fr/dokuwiki/doku/wiki:syntax |
http://login.free.fr/dokuwiki/doku.php/wiki:syntax | http://login.free.fr/dokuwiki/d/wiki:syntax |
http://login.free.fr/dokuwiki/doku.php/wiki:syntax | http://login.free.fr/dokuwiki/wiki/wiki:syntax |
et pour un wiki déployé à la racine du site | |
http://login.free.fr/doku.php/wiki:syntax | http://login.free.fr/sbouirtkx/wiki:syntax |
http://login.free.fr/doku.php/wiki:syntax | http://login.free.fr/wiki/wiki:syntax |
http://login.free.fr/doku.php/wiki:syntax | http://login.free.fr/MonSuperWiki.Version.2/wiki:syntax |
http://login.free.fr/doku.php/wiki:syntax | http://login.free.fr/etc…/wiki:syntax |
1ère étape : faire en sorte que dokuwiki génère de beaux url
Choisir un nom, comme d
, wiki
ou mon-wiki
, composé seulement de lettres sans accent, de quelques chiffres et éventuellement de quelques tirets ou autres soulignés. bannir les espaces, lettres accentuées ou avec cédille.
Dans le fichier inc/preload.php
– créez le si besoin –, mettre ceci, où il faudra remplacer les mots __NOM_CHOISI__
par… le nom choisi précédemment.
Par exemple, si vous avez choisi d
, alors vous devrez mettre … define('DOKU_SCRIPT', 'd');
si vous avez choisi monsuperwiki
, vous devrez mettre … define('DOKU_SCRIPT', 'monsuperwiki');
etc…
<?php if(!defined('DOKU_SCRIPT')) define('DOKU_SCRIPT','__NOM_CHOISI__'); if($_SERVER['PATH_INFO']='php') $_SERVER['PATH_INFO']='';
NB
Si les caractères <?php
sont déjà présents dans ce fichier, inscrivez simplement en dessous de <?php
les deux lignes if(!defined…
et if($_SERVER…
, ne rajoutez pas un second <?php
Maintenant, dokuwiki va générer des URL comme ça http://wiki.example.com/d/wiki:syntax
pour chaque lien, image, document etc…
2ème étape : faire reconnaitre ces URL par le serveur web
Il reste à faire en sorte que ce /d/
(ou tout autre nom choisi) corresponde à quelque chose que le serveur web va comprendre. C'est super simple. renommer (ou copier) le fichier doku.php
en __NOM_CHOISI__.php
1). En effet, lorsqu'il cherche un fichier ou un dossier nommé d
(ou tout autre nom d'ailleurs), le serveur ne le trouvant pas va essayer d'autres combinaisons qui pourraient satisfaire la requête. Dans le lot, il va essayer d.php
, et là, paf ! Ça gagne.
Les finitions
Pour parfaire la solution, il faut légèrement modifier aussi le fichier index.php
. Voilà à quoi il devra ressembler
<?php /** * Forwarder to doku.php * * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * @author Andreas Gohr <andi@splitbrain.org> * @author Schplurtz le Déboulonné <schplurtz@laposte.net> */ header("Location: __NOM_CHOISI__");
La beauté idéale
Il est possible d'aller encore plus loin en changeant la valeur du paramètre useslash à 1
. On a alors des URL de ce genre http://login.free.fr/d/wiki/syntax
– le :
s'est transformé en /
.
Voilà, on a fait le tour. Maintenant les URL sont de beaux URL, facilement et correctement indexés par les moteurs, et l'ensemble est cohérent.
doku.php
, ainsi les deux formes resteront valides et les internautes ne tomberont pas sur l'horrible message de la mort indiquant «404 Page not found» quand il suivront les indications de google