====== 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 [[.config: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étiques((Dans la page d'administration de dokuwiki (Administrer -> Paramètres de configuration -> Paramètres Avancés) le paramètre correspondant à ''[[.:config:userewrite]]'' est appelé <>. Les valeurs numériques n'apparaissent pas, il y a ces mots à la place.)) ^ 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 [[.:config:userewrite|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. - renommez ''doku.php'' en ce que voulez, par exemple ''wiki.php'' - 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 ! - Mettez à jour le nom dans le fichier ''[[devel:preload|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. C'est tout. ===== Option 1: serveur web ===== ^ Fichier de configuration ^ Page d'administration du wiki ^ | $conf['userewrite'] = 1; | <>=Fichier .htaccess | ==== Apache ==== Avec le serveur web Apache, la réécriture d'URL se fait grâce au module **mod_rewrite** d'[[http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html|Apache 1]] ou d'[[http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html|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 : AllowOverride AuthConfig FileInfo Limit 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. RewriteEngine on ... rewrite rules here ... 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 [[http://learn.iis.net/page.aspx/737/url-rewrite-module-2/|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 : - Assurez-vous d'avoir le fichier ''.htaccess'' pour Apache décrit ci-dessus. - 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). - Dans le Gestionnaire IIS, naviguez jusqu'au site qui héberge dokuwiki et double-cliquez "URL Rewrite" - Dans le panneau de droite, le panneau Action, trouvez <> et cliquez dessus. - Sélectionnez votre fichier ''.htaccess'' et cliquez sur importer, - 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. - Après une importation fructueuse, cliquez sur <> dans le panneau d'action. - Rendez-vous alors dans l'interface d'administration de dokuwiki et fixer le paramètre [[.:config:userewrite]] à la valeur <>. 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é [[http://www.isapirewrite.com/|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 //[[http://www.codeplex.com/IIRF|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 [[:install:lighttpd|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 [[:install:lighttpd_config_example|ici]]. ==== Nginx ==== Nginx est un serveur web stable et très rapide. Découvrez en plus sur le site du [[http://nginx.org/|projet Nginx]] et sur ce [[http://wiki.nginx.org|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 ( [[http://wiki.nginx.org/Dokuwiki|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 [[http://wiki.codemongers.com/NginxHttpFcgiModule|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; | <>=Interne à DokuWiki | Cette option ne requiert aucun réglage du serveur web. Cependant, elle dépend de la fonctionnalité <> du standard CGI, tel qu'il est implémenté par Apache. IIS est [[bug>718|connu pour ne pas fonctionner]] avec ce réglage.((Voir la [[#Discussion]])). 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 PHP((//PHP session ID// en anglais)) 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 ===== [[:tips:httpslogin|Règles de réécriture pour une connexion sécurisée]] en anglais ===== Discussion en anglais ===== voir [[:rewrite#Discussion|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 ''/'' --- //[[xie@yihui.name|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 ''RewriteCond''s 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 [[http://forum.dokuwiki.org/post/32858 | Apachectl status is broken with dokuwiki]] du forum //server setup//.