DokuWiki

It's better when it's simple

Outils pour utilisateurs

Outils du site


fr:rewrite

Réécriture d'URL

En standard, DokuWiki n'effectue aucune réécriture d'URL, ce qui produit ce genre d'URL :

http://example.com/doku.php?id=page

Ces URL sont considérées comme laides et ne sont pas très bien indexées par certains moteurs de recherche.

La solution pour obtenir de beaux URL est d'activer la réécriture d'URL. DokuWiki peut utiliser deux méthodes différentes suivant la valeur du paramètre de configuration userewrite. L'une utilise les possibilités de réécriture du serveur WEB, l'autre est entièrement prise en charge par DokuWiki. Le tableau ci-dessous résume la situation :

userewrite URL esthétiques1) Info URL d'exemple
0 aucun Aucune réécriture. C'est la valeur par défaut http://example.com/dokuwiki/doku.php?id=wiki:syntax
1 Fichier .htaccess Les réécritures sont mise en place en avec l'aide du serveur WEB. Par exemple, avec Apache vous devez créer un fichier .htaccess ou avoir accès au fichier de configuration du serveur. http://example.com/dokuwiki/wiki:syntax
2 Interne à DokuWiki Les réécritures sont entièrement prises en charge par DokuWiki. http://example.com/dokuwiki/doku.php/wiki:syntax

Comme la réécriture d'URL nécessite, en plus du réglage de l'option userewrite, des réglages supplémentaires, elle est désactivée par défaut. Les différentes solutions sont expliquées ci-après.

Option 0: changer les noms de fichiers

Ceci n'a rien à voir avec les réécritures d'URL ou autres choses compliquées et fonctionnera donc indépendamment de tout réglage de serveur web.

  • En premier lieu, vous êtes libre de placer DokuWiki dans le dossier de votre choix. Une sorte d'habitude fait qu'on trouve souvent dans les documentations que DokuWiki est installé dans un dossier dokuwiki, mais tout est valable. monwiki aussi bien que le reste. On peut tout simplement placer DokuWiki à la racine de son site web. Comme c'est le cas pour le site que vous lisez en ce moment. Quel que soit votre choix, il n'y a aucun réglage à faire.
  • Si vous voulez changer le nom du script doku.php, parce que vous trouvez que cela sonne mal ou autre.
    1. renommez doku.php en ce que voulez, par exemple wiki.php
    2. Mettez à jour le nom dans le fichier index.php (ce fichier se trouve dans le dossier de base de DokuWiki)
       header("Location: wiki.php");

      :!: Pensez à refaire la modification après une mise à jour de DokuWiki !

    3. Mettez à jour le nom dans le fichier inc/preload.php (chemin à la base de DokuWiki). Créez le fichier s'il n'existe pas. inc/preload.php ne fait pas partie de la distribution de DokuWiki et ne sera pas écrasé par une mise à jour de DokuWiki.
      <?php
      if(!defined('DOKU_SCRIPT')) define('DOKU_SCRIPT','wiki.php');

C'est tout.

Option 1: serveur web

Fichier de configuration Page d'administration du wiki
$conf['userewrite'] = 1; «URL esthétiques»=Fichier .htaccess

Apache

Avec le serveur web Apache, la réécriture d'URL se fait grâce au module mod_rewrite d'Apache 1 ou d'Apache 2.

Le module est activé dans le fichier de configuration d'Apache (httpd.conf en général) avec la ligne suivante. Assurez-vous qu'elle ne soit pas commentée.

LoadModule rewrite_module modules/mod_rewrite.so

Sur de nombreuses distributions de Linux (Debian, Ubuntu, etc…), on peut activer le module de réécriture d'URL sans avoir à modifier à la main le fichier de configuration grâce à la commande suivante :

sudo a2enmod rewrite

La configuration de mod_rewrite se fait au travers de règles de réécriture, rewrite rules en anglais. Ces règles de réécriture peuvent être définies dans le fichier de configuration d'Apache ou dans un fichier .htaccess placé dans le répertoire principal de DokuWiki. DokuWiki est livré avec un fichier .htaccess.dist qui contient les règles idoines pour le mode 1, mais commentées. Il suffit de copier le fichier sous le nom .htaccess et de décommenter les lignes pour activer la réécriture (Utilisateurs Debian : prudence !)

RewriteEngine on
 
RewriteBase /dokuwiki
 
RewriteRule ^_media/(.*)              lib/exe/fetch.php?media=$1  [QSA,L]
RewriteRule ^_detail/(.*)             lib/exe/detail.php?media=$1  [QSA,L]
RewriteRule ^_export/([^/]+)/(.*)     doku.php?do=export_$1&id=$2  [QSA,L]
RewriteRule ^$                        doku.php  [L]
RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule (.*)                      doku.php?id=$1  [QSA,L]

Sur la ligne RewriteBase /dokuwiki, il faut remplacer /dokuwiki par l'URL de base de votre wiki. Par exemple, si l'URL standard de votre wiki est http://www.whatever.com/projects/documents/doku.php, la ligne deviendra RewriteBase /projects/documents. Si votre wiki se trouve dans votre espace personnel, http://some.site.example.com/~mylogin, il faudra utiliser RewriteBase /~mylogin. Parfois, cette ligne n'est absolument pas nécessaire.

Quelques précisions

Les fichiers .htaccess ne sont pris en compte par Apache que si la configuration globale l'autorise. De nombreuses installations d'Apache n'autorisent pas par défaut l'utilisation des fichiers .htaccess. Pour que les fichiers .htaccess soient pris en compte, il faut que les lignes suivantes se trouvent dans le fichier de configuration d'Apache :

<Directory /chemin/du/dossier/de/dokuwiki>
   AllowOverride AuthConfig FileInfo Limit
</Directory>

Ces lignes n'autorisent la prise en compte que de quelques options dans les fichiers .htaccess, juste ce qui est nécessaire pour une installation par défaut. Si cela ne fonctionne pas pour vous, essayez avec l'option AllowOverride All.

Si vous avez accès au fichier de configuration d'Apache, vous pouvez tout aussi bien inscrire les règles de réécriture directement dans ce fichier.

<Directory /path/to/dokuwiki>
  RewriteEngine on
  ... rewrite rules here ...
</Directory>

Vous devrez redémarrer le serveur Apache ou lui notifier les changements pour que les modifications soient prises en compte.

Certains personnes ont rapporté une erreur “403 - Forbidden” après avoir activé la réécriture d'URL. Activer l'option FollowSymlinks a résolu leur problème.

Options +FollowSymlinks
RewriteEngine on
 
...etc.

Les règles de réécriture données ici transfèrent toutes les requêtes vers des fichiers ou dossier inexistants vers le moteur de DokuWiki. Ceci peut s'appliquer également aux alias. Par exemple, sur certains serveurs, on trouve l'alias /stats qui permet d'avoir accès aux statistiques du serveur web. Rediriger /stats vers DokuWiki est une mauvaise idée. Afin de conserver /stats pour l'accès aux statistiques du serveur, il faut alors ajouter une ligne d'exclusion pour cet URL. Dans le cas de /stats cela donnerait le résultat suivant :

...
RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteCond %{REQUEST_URI} !^/stats/(.*)$
...

Si vous n'utilisez pas de RewriteBase, peut-être parce que votre wiki se trouve sur un VirtualHost dédié, vous devez modifier les règles de réécriture en prenant ce fait en compte :

RewriteRule ^/_media/(.*)  /lib/exe/fetch.php?media=$1  [QSA,L]
RewriteRule ^/_detail/(.*) /lib/exe/detail.php?media=$1  [QSA,L]
RewriteRule ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2  [QSA,L]
RewriteRule ^/$ /doku.php [L]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteRule (.*) /doku.php?id=$1  [QSA,L]

Chaque bloc de RewriteRule doit commencer par une barre oblique (/), sinon Apache renverra un code d'erreur 400.

Si vous utilisez un fichier robots.txt ou sitemap.xml, il faut les exclure des règles de réécriture dans votre fichier .htaccess :

RewriteCond %{REQUEST_FILENAME}   !robots\.txt
RewriteCond %{REQUEST_FILENAME}   !sitemap\.xml

IIS

URL Rewrite Module for IIS 7 (Microsoft's official)

Le module URL Rewrite Module pris en charge par Microsoft est un module de réécriture qu'on peut installer sur IIS 7 et supérieurs. Depuis la version 2.0, il possède un assistant qui convertit les fichiers .htaccess dans son propre format. Il utilise le mécanisme de configuration standard de IIS qui enregistre les réglages spécifiques à un site dans le fichier web.config du dossier racine.

Comment le configurer pour DokuWiki :

  1. Assurez-vous d'avoir le fichier .htaccess pour Apache décrit ci-dessus.
  2. Installez le module URL Rewrite Module 2.0 depuis le site web de Microsoft http://www.iis.net/expand/URLRewrite. Assurez-vous que vous installez au moins la version 2.0. Il s'agit d'une pré-version à l'heure où ces mots sont écrits (Janvier 2010).
  3. Dans le Gestionnaire IIS, naviguez jusqu'au site qui héberge dokuwiki et double-cliquez “URL Rewrite”
  4. Dans le panneau de droite, le panneau Action, trouvez «Importer des règles…» et cliquez dessus.
  5. Sélectionnez votre fichier .htaccess et cliquez sur importer,
  6. Si vous rencontrez des problèmes à propos de RewriteBase qui n'est pris en charge, commentez cette ligne dans le fichier .htaccess et recommencez l'importation.
  7. Après une importation fructueuse, cliquez sur «Appliquer» dans le panneau d'action.
  8. Rendez-vous alors dans l'interface d'administration de dokuwiki et fixer le paramètre userewrite à la valeur «Fichier .htaccess».

Cette procédure a fonctionné avec mon installation de DokuWiki qui se trouvait à la racine de mon site web. Je ne sais pas vraiment si ces instructions sont suffisantes pour un dokuwiki installé dans un sous-répertoire ( tel que /exemple/documentation ) mais en principe, le module de réécriture prend en charge DokuWiki et dans mon scénario, il a pu convertir sans problème le fichier .htacess.

ISAPI Rewrite Lite

Par défaut, IIS n'a pas de système de réécriture. J'ai utilisé ISAPI Rewrite Lite (gratuit) avec ces règles de réécriture. CF fichier C:\Program Files\Helicon\ISAPI_Rewrite\httpd.ini

# Règles pour DokuWiki
# Correction des flux RSS
RewriteRule ^(/wiki/)feed.php $1/feed.php [I,L]
RewriteRule ^(/wiki/)feed.php\?(.*) $1/feed.php\?mode=$2&$3 [I,L]
 
RewriteRule ^(/wiki/)_media/(.*)\?(.*) $1lib/exe/fetch.php\?media=$2&$3 [I,L]
RewriteRule ^(/wiki/)_detail/(.*)\?(.*) $1lib/exe/detail.php\?media=$2&$3 [I,L]
RewriteRule ^(/wiki/)_detail/(.*) $1lib/exe/detail.php\?media=$2 [I,L]
RewriteRule ^(/wiki/)_export/([^/]+)/(.*) $1doku.php?do=export_$2&id=$3 [I,L]
 
RewriteRule (/wiki/) $1doku.php [I,L]
 
RewriteRule ^(/wiki/)\?idx=(.*) $1doku.php\?idx=$2 [I,L]
RewriteRule ^(/wiki/)lib/(.*) $1lib/$2 [I,L]
RewriteRule ^(/wiki/)(.*)\?do=(.*) $1doku.php\?id=$2&do=$3 [I,L]
RewriteRule ^(/wiki/)doku.php\?id=(.*) $1doku.php\?id=$2 [I,L]
RewriteRule ^(/wiki/)(.*) $1doku.php\?id=$2 [I,L]
 
# Cette règle corrige un problème d'accès aux anciennes versions d'une page
RewriteRule ^(/wiki/)(.*)\?(.*) $1doku.php\?id=$2&$3 [I,L]
 
# Les Différences ne fonctionnent pas, à moins de sélectionner "Aucun" dans l'option "URL esthétiques". Vous pouvez alors toujours utiliser et faire des liens utilisant de beaux URL, mais DokuWiki utilisera sa méthode de nommage par défaut :-(

Pour chacune des lignes RewriteRule ^(/wiki/), remplacez (/wiki/) avec le nom de dossier que vous utilisez dans votre URL pour accéder au wiki. Si votre wiki se trouve habituellement à l'URL http://www.whatever.com/projects/documents/doku.php , vous devez utiliser ce genre de ligne : ^(/projects/documents/)

Ionics Isapi Rewrite Filter

On peut également utiliser Ionics Isapi Rewrite Filter, qui est libre et gratuit.

IterationLimit 1
 
# "QSA" non pris en charge. Correction.
RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule (.*)\?(.*) $1&$2
 
RewriteRule ^/_media/(.*)             /lib/exe/fetch.php?media=$1   [QSA,L]
RewriteRule ^/_detail/(.*)            /lib/exe/detail.php?media=$1  [QSA,L]
RewriteRule ^/_export/([^/]+)/(.*)    /doku.php?do=export_$1&id=$2  [QSA,L]
RewriteRule ^/$                       /doku.php                     [QSA,L]
# correction des redirections infinies
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule ^/(.*)/$                  /doku.php?id=$1               [QSA,L]
# fin de correction
RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule ^/(.*)                    /doku.php?id=$1               [QSA,L]

Lighttpd

En supposant que vous avez suivi ces instructions pour installer doku avec lighttpd. Si ce n'est pas le cas, définissez maintenant var.dokudir comme dans l'exemple.

# On part du principe que le wiki est accessible via http://wiki.example.com/dokuwiki/
var.dokudir = "/dokuwiki"
 
# réécritures pour dokuwiki
$HTTP["url"] =~ "^" + var.dokudir { index-file.names = ("doku.php") }
    url.rewrite-once = (
      "^" + var.dokudir + "/lib/.*$"              => "$0",
      "^" + var.dokudir + "/_media/(.*)?\?(.*)$"  => var.dokudir + "/lib/exe/fetch.php?media=$1&$2",
      "^" + var.dokudir + "/_media/(.*)$"         => var.dokudir + "/lib/exe/fetch.php?media=$1",
      "^" + var.dokudir + "/_detail/(.*)?\?(.*)$" => var.dokudir + "/lib/exe/detail.php?media=$1&$2",
      "^" + var.dokudir + "/_detail/(.*)?$"       => var.dokudir + "/lib/exe/detail.php?media=$1",
      "^" + var.dokudir + "/_export/([^/]+)/(.*)\?(.*)$" => var.dokudir + "/doku.php?do=export_$1&id=$2&$3",
      "^" + var.dokudir + "/_export/([^/]+)/(.*)" => var.dokudir + "/doku.php?do=export_$1&id=$2",
      "^" + var.dokudir + "/doku.php.*"           => "$0",
      "^" + var.dokudir + "/feed.php.*"           => "$0",
      "^" + var.dokudir + "/(.*)\?(.*)"           => var.dokudir + "/doku.php?id=$1&$2",
      "^" + var.dokudir + "/(.*)"                 => var.dokudir + "/doku.php?id=$1"
    )

activez le module rewrite dans lighttpd.conf en ajoutant “mod_rewrite” à la liste des server.modules. Vous pouvez voir un exemple de configuration ici.

Nginx

Nginx est un serveur web stable et très rapide. Découvrez en plus sur le site du projet Nginx et sur ce wiki anglais. Dans les exemples qui suivent, la base du serveur se trouve dans /var/www et dokuwiki est déployé dans /var/www/dokuwiki.

For NGINX 0.7.65 or later ( config source )

server {
        server_name wiki.domain.tld;
        # Ndt : cela semble contredire la description qui est faite de
        #       l'installation dans le paragraphe d'introduction...
        root /var/www/dokuwiki;
 
        location / {
                index doku.php;
                try_files $uri $uri/ @dokuwiki;
        }
 
        location @dokuwiki {
                rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
                rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
                rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
                rewrite ^/(.*) /doku.php?id=$1 last;
        }
 
        location ~ \.php$ {
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_pass unix:/tmp/phpcgi.socket;
        }
}

Configuration pour Nginx NGINX 0.6.x et supérieur (testé jusqu'à 0.7.65)

server {
   listen       80;
   server_name  example.com www.example.com ;
	
   #Taille max des fichiers téléversés. Adaptez cette valeur à vos besoins
   client_max_body_size 4M;
   client_body_buffer_size 128k;
	
	
   root   /var/www/wiki/;
   index  index.html index.php;

   location / {
    if (-f $request_filename) {
      break;
     }

     if (!-f $request_filename) {
        #dokuwiki est installé à la racine du site
        rewrite ^/(.*)?(.*)  /doku.php?id=$1&$2 last;
        rewrite ^/$ /doku.php last;
        break;
     }          
   }

   #dokuwiki est installé à la racine du site
   rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
   rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
   rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;

   location ~ \.php$ {
    fastcgi_pass   phpfcgi;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
   }
}

Configuration pour Nginx 0.7.27 ou supérieur (avec prise en charge des “try_files”)

server {
    listen 80;
    server_name example.com www.example.com;

   #Taille max des fichiers téléversés. Adaptez cette valeur à vos besoins
    client_max_body_size 4M;
    client_body_buffer_size 128k;

    root /var/www/wiki;
    index doku.php;

    location / { try_files $uri $uri/ @dokuwiki; }

    location @dokuwiki {
        rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
        rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
        rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
        rewrite ^/(.*) /doku.php?id=$1&$args last;
    }

    location ~ \.php$ {
        if (!-f $request_filename) { return 404; }
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param REDIRECT_STATUS 200;
        fastcgi_pass 127.0.0.1:9000;
    }
}

Notes

Nginx prend totalement en charge le fast-cgi. Veuillez lire nginx fastcgi pour adapter votre configuration.

Si vous utilisez https, la variable serveur HTTPS doit être réglée de manière à permettre la génération correcte de liens dans dokuwiki. On peut le faire de cette manière dans la section server :

server {
  listen 443;
  ...
  location ~ .php$ {
    ...
    include fastcgi_params;
  ## sets $_SERVER['HTTPS']
    fastcgi_param HTTPS on;
  }

Le dernier mot-clef des règles de réécriture avant le réglage de l'emplacement fait en sorte que la réécriture ne se produise qu'une seule fois. Vous devez remplacer toutes les occurences de /dokuwiki/ qui apparaissent ci-dessus par le nom le dossier de votre installation de dokuwiki, relatif à la racine du serveur web.

Option 2: DokuWiki

Fichier de configuration Page d'administration du wiki
$conf['userewrite'] = 2; «URL esthétiques»=Interne à DokuWiki

Cette option ne requiert aucun réglage du serveur web. Cependant, elle dépend de la fonctionnalité «PATH_INFO» du standard CGI, tel qu'il est implémenté par Apache. IIS est connu pour ne pas fonctionner avec ce réglage.2). IIS6 (MS Server 2003) fonctionne très bien lorsque basedir est réglé sur /.

Utiliser la directive Apache Alias avec cette option peut produire tout à la fois de sérieux maux de tête et un wiki tout cassé. ⇐ Une rustine qui devrait corriger ce problème est disponible à cet URL https://www.trg-oha.de/~sstrickroth/dokuwiki-alias.patch.

Des identifiants de session PHP propres

En dépit du fait d'utiliser de beaux URL, vous pourriez rencontrer un paramètre “dokuwiki” dans les URL qui ressemble à ceci :

PHP session ID:

http://example.com/example?DokuWiki=c81a95369a66576982119e2a60b557a5

Ce paramètre est l'identifiant de session PHP3) et est ajouté par PHP automatiquement. C'est abolument sans rapport avec les réécritures. Pour l'éviter, vous pouvez forcer PHP à toujours utiliser un cookie en utilisant l'option PHP session.use_only_cookies.

On fait cela généralement dans le fichier de configuration php.ini. Si votre wiki est installé chez un hébergeur de sites, vériiez si vous pouvez et comment vous pouvez le faire.

session.use_only_cookies=1

Si les identifiants de session sont toujours là, essayez ceci :

session.use_trans_sid=0

Lorsque PHP est utilisé comme module Apache, il est possible que vous puissiez changer ce réglage en utilisant un fichier .htacess avec cette syntaxe :

php_flag session.use_only_cookies on
php_flag session.use_trans_sid off

Si vous ne pouvez utiliser aucune de ces deux solutions –de nombreux hébergeurs de sites empêchent l'édition de php.ini ainsi que l'utilisation de hp_flags dans le fichier .htaccess – vous devrez éditer conf/local.php. Veuillez noter que les réglages indiqués ne peuvent être changés par l'utilisation de la fonction ini_set() de PHP depuis la version PHP 4.2.3, et donc que la seule méthode disponible est :

ini_set('url_rewriter.tags', '');
Mon problème était que mon session.cookie_domain était incorrect (J'utilise du virtual hosting, et le nom de domaine était incorrect. J'ai ajouté
php_value session.cookie_domain www.my.domain.com

dans le bon hôte virtuel dans le fichier httpd.conf (bien qu'un fichier .htaccess eût probablement fait l'affaire) et les URL pollués ont disparu. De plus, si vous ne pouvez ni modifier php.ini, ni le fichier de configuration d'Apache, vous devriez pouvoir utiliser

ini_set('PHP variable', 'value');

pour obtenir le même effet. Il semble que conf/local.php soit un bon emplacement pour faire ce réglage car ce fichier est inclus avant que la session PHP ne soit initialisée.

Dans mon cas, FastCGI provoquait l'apparition des Sessions PHP dans l'URL. Désactiver FastCGI les a fait disparaître.

Voir également

Discussion en anglais

Discussion

  • Même en utilisant la configuration ci-dessus avec Apache, souvent l'URL devient example.com/doku.php, peu importe la page dans laquelle vous vous trouvez. Je n'ai pas trouvé de solution.
    • C'est un problème d'implémentation, pas un problème de réécriture. — BlackFog 2007-12-19 15:42
  • Option = 2 fonctionne avec IIS6 (windows 2003) et l'instantané de dokuwiki construit chaque nuit si le paramètre basedir est positionné. — BlackFog 2007-12-19 15:42
  • Pour Option=2, il semble qu'on doive spécifier la valeur de basedir, peu importe le système utilisé (IIS, Apache, etc…); même quand doku.php est à la racine du site, on doit régler basedir sur /Yihui Xie 2008/05/28 20:09
  • J'utilise depuis longtemps l'option 2 de réécriture de DokuWiki et maintenant des liens du genre de …/wiki/doku.php sont répartis sur l'Internet. Maintenant, si j'utilise la méthode de réécriture 1 discutée ici, tous les anciens liens avec doku.php vont devenir invalides. Est-il possible d'ajouter des règles de telles sorte que les anciens liens restent valides ? Si oui, SVP, expliquez comment faire.
    • La solution était d'ajouter
      RewriteRule doku.php/(.*)             doku.php?id=$1  [QSA,L]

      juste après la ligne

      RewriteRule ^_export/([^/]+)/(.*)     doku.php?do=export_$1&id=$2  [QSA,L]
  • L'utilisation de réécriture pour Nginx telles que présentées casse la récupération des images de dokuwiki. Il semble ne pas utiliser la valeur par défaut de racine :
     
    [error] 27613#0: *1 open() "/usr/local/nginx/html/wiki/lib/tpl/arctic/images/button-firefox.png" failed

    Ma solutions consiste à ajouter ce qui suit au fichier nginx.conf :

    location /wiki/lib/ {
      root /var/www/path/to/site.../;
    }

    thedimi.net 2009-03-06 00:00

  • Avec IIS et Helicon Isapi_Rewrite, si DokuWiki est à la racine, le code du fichier httpd.ini devrait être ça (Remarquez l'absence de sous-répertoire et le fait qu'il y a deux lignes pour “_media” et non pas une seule comme le code plus haut l'indique) :
    # Règles pour Dokuwiki
    # Correction des flux RSS
    RewriteRule ^(/)feed.php $1/feed.php [I,L]
    RewriteRule ^(/)feed.php\?(.*) $1/feed.php\?mode=$2&$3 [I,L]
     
    RewriteRule ^(/)_media/(.*)\?(.*) $1lib/exe/fetch.php\?media=$2&$3 [I,L]
    RewriteRule ^(/)_media/(.*) $1lib/exe/fetch.php\?media=$2 [I,L]
    RewriteRule ^(/)_detail/(.*)\?(.*) $1lib/exe/detail.php\?media=$2&$3 [I,L]
    RewriteRule ^(/)_detail/(.*) $1lib/exe/detail.php\?media=$2 [I,L]
    RewriteRule ^(/)_export/([^/]+)/(.*) $1doku.php?do=export_$2&id=$3 [I,L]
     
    RewriteRule (/) $1doku.php [I,L]
     
    RewriteRule ^(/)\?idx=(.*) $1doku.php\?idx=$2 [I,L]
    RewriteRule ^(/)lib/(.*) $1lib/$2 [I,L]
    RewriteRule ^(/)(.*)\?do=(.*) $1doku.php\?id=$2&do=$3 [I,L]
    RewriteRule ^(/)doku.php\?id=(.*) $1doku.php\?id=$2 [I,L]
    RewriteRule ^(/)(.*) $1doku.php\?id=$2 [I,L]
     
    # Cette règle corrige un problème pour voir les anciennes versions
    RewriteRule ^(/)(.*)\?(.*) $1doku.php\?id=$2&$3 [I,L]
     
    # Les Différences ne fonctionnent pas, à moins de sélectionner "Aucun" dans l'option "URL esthétiques". Vous pouvez alors toujours utiliser et faire des liens utilisant de beaux URL, mais DokuWiki utilisera sa méthode de nommage par défaut :-(

Commande « Apachectl status » ne fonctionne plus

Lorsque DokuWiki est placé à la racine d'un site web (comme le site que vous parcourez en ce moment) les règles de réécriture de DokuWiki affectent la commande apachectl status et lui font retourner la page d'erreur 404 de DokuWiki au lieu de la page server-status. Vous pouvez régler ce problème soit en rajoutant cette règle à la suite des autres RewriteConds dans les règles de réécriture pour DokuWiki, :

RewriteCond %{REQUEST_URI} !^/server-status$

soit en créant un fichier vide server-status à la racine de DokuWiki, là où se trouve le fichier doku.php.

Les détails en anglais se trouvent dans le fil Apachectl status is broken with dokuwiki du forum server setup.

1)
Dans la page d'administration de dokuwiki (Administrer → Paramètres de configuration → Paramètres Avancés) le paramètre correspondant à userewrite est appelé «URL esthétique». Les valeurs numériques n'apparaissent pas, il y a ces mots à la place.
2)
Voir la Discussion
3)
PHP session ID en anglais
fr/rewrite.txt · Dernière modification : 2015-05-13 21:42 de 88.185.225.67

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki