DokuWiki

It's better when it's simple

Outils pour utilisateurs

Outils du site


fr:config:userewrite

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
fr:config:userewrite [2010-12-05 09:05] – Les liens plus d'infos renvoient à la page en français. schplurtzfr:config:userewrite [2022-09-23 16:14] (Version actuelle) – [httpd (OpenBSD)] JeromeP
Ligne 1: Ligne 1:
-====== Option de configuration : userewrite ======+====== Réécriture d'URL ======
  
-Activez cette option afin d'obtenir des URL plus beaux et plus sympathiques pour les moteurs de recherche et les humains. ([[:rewrite|detailed rewrite setup instructions]]).+Par défaut, DokuWiki ne réécrit pas d'URL, ce qui donne des URL comme celle-ci :
  
-  * TypeNombre +  http://example.com/doku.php?id=page 
-  * Valeur par défaut: ''0''+   
 +Ces URL sont considérées comme laides et ne sont pas bien indexées par certains moteurs de recherche.
  
-Vous pouvez utiliser les valeurs suivantes :+La solution consiste à activer la réécriture d'URL, qui est désactivée par défaut.
  
 +===== Instructions en anglais clair =====
  
-^ userewrite ^ URLs esthétiques((Dans la page d'administration de dokuwiki (Administrer -> Paramètres de configuration -> Paramètres Avancés) le paramètre correspondant à ''userewrite'' est appelé <<URLs esthétique>>. Les valeurs numériques n'apparaissent pas, il y a ces mots à la place.)) ^ Info ^ URL d'exemple ^ +==== Étapes ====
-|     | aucun | Aucune réécriture. C'est la valeur par défaut | %%http://example.com/dokuwiki/doku.php?id=wiki:syntax%% | | +
-|     | .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%% | [[..:rewrite#Option 1: web server|Plus d'info]] | +
-|     | DokuWiki | Les réécritures sont entièrement prises en charge par DokuWiki.  | %%http://example.com/dokuwiki/doku.php/wiki:syntax%% | [[..:rewrite#Option 2: DokuWiki|Plus d'info]]|+
  
-{{:config:danger.png  }} **Danger**: Changer cette option pourrait rendre votre wiki et son menu d'administration inaccessible.+  - Allez dans l'administration 
 +  - Ouvrir les paramètres de configuration 
 +  - Changez l'option "Utiliser des URL esthétiques" en .htaccess  
 +  - En dessous, cochez l'option "Utiliser "/" comme séparateur d'espace de noms dans les URL" 
 +  - Sauvegarder 
 +  - Ensuite, à l'aide d'un ftp ou d'un gestionnaire de fichiers, vous devez accéder à votre dossier /wiki/ que vous avez créé lors de la création de votre wiki. 
 +  - À l'intérieur, vous trouverez un fichier appelé .htaccess et .htaccess.dist. (si vous ne le voyez pas, assurez-vous que les fichiers cachés sont visibles. Il peut s'agir d'une option que vous avez lors de la connexion en fonction de votre fournisseur d'hébergement, ou créez simplement un fichier appelé .htaccess et téléchargez-le) 
 +  - dans le fichier .htaccess, collez ce qui suit (vous pouvez également décommenter la section dans .htaccess.dist puis la renommer en .htaccess) :
  
 +<code apache>
 +RewriteEngine on
  
-===== Voir aussi =====+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] 
 +RewriteRule ^index.php$               doku.php 
 +</code>
  
-  [[fr:config:|Configurer DokuWiki]] +Cela vous donnera un format comme www.myexample.com/wiki-article. Si vous avez un format différent pour votre adresse, comme www.myexample.com/dokuwiki/wiki-article, placez cette ligne juste après **RewriteEngine on*
-  [[useslash]] +<code apache> 
-  [[:Rewrite]]+RewriteBase /dokuwiki 
 +</code>
  
 +
 +où /dokuwiki doit être remplacé par le nom réel du dossier que vous utilisez.
 +
 +
 +===== Plus de détails pour les connaisseurs techniques =====
 +
 +DokuWiki prend en charge deux méthodes de réécriture d'URL, activées via l'option [[config:userewrite]]. L'un s'appuie sur les capacités de réécriture du serveur Web ; l'autre gère les URL réécrites dans DokuWiki. Le tableau ci-dessous résume ces options.
 +
 +^ Valeur ^ Info ^ Exemple d'URL ^
 +| 0 | Aucune réécriture d'URL n'est utilisée. C'est la valeur par défaut. | %%http://example.com/dokuwiki/doku.php?id=wiki:syntax%% |
 +| 1 | La réécriture est gérée par le serveur Web. | %%http://example.com/dokuwiki/wiki:syntax%% |
 +| 2 | La réécriture est effectuée par DokuWiki. | %%http://example.com/dokuwiki/doku.php/wiki:syntax%% |
 +
 +La réécriture d'URL est désactivée par défaut car elle nécessite une configuration supplémentaire en plus de définir l'[[fr:config:userewrite|option de configuration]] appropriée - ces configurations sont décrites ci-dessous.
 +
 +La réécriture d'URL peut être activée à ''?do=admin&page=config#_advanced'' ou dans la ligne de fichier locale conf/local.php qui lit ''$conf['userewrite'] = N;''. N est le nombre 0, 1 ou 2. La valeur par défaut est zéro sans cette ligne présente. Suivez les instructions de configuration ci-dessous pour l'option choisie.
 +
 +====== Option 1 : serveur Web ======
 +
 +:!: N'oubliez pas de définir ce qui suit dans le gestionnaire de configuration ''/start?do=admin&page=config''
 +  * Utilisez de belles URL : **.htaccess**
 +  * Utilisez une barre oblique comme séparateur d'espace de noms dans les URL [**x**]
 +Sinon, les règles de réécriture ne seront pas utiles.
 +
 +
 +==== Apache ====
 +
 +La réécriture des URL dans Apache se fait via le module **mod_rewrite** de [[http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html|Apache 1]] ou [[http://httpd. apache.org/docs/2.0/mod/mod_rewrite.html|Apache 2]].
 +
 +DokuWiki est livré avec un fichier ''.htaccess.dist'' qui contient les règles de réécriture nécessaires pour le mode 1.
 +
 +Voici un exemple
 +<code apache>
 +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]
 +RewriteRule ^index.php$               doku.php
 +</code>
 +
 +Sur la ligne ''RewriteBase /dokuwiki'', vous devrez peut-être remplacer le ''/dokuwiki'' par le répertoire que vous utilisez dans votre URL pour accéder au wiki. Si votre wiki apparaît au niveau supérieur du domaine (par exemple, http://example.com pointe vers la page de démarrage du wiki, utilisez la ligne suivante : ''RewriteBase /''.
 +
 +Vous devrez peut-être également renommer le fichier de ''.htaccess.dist'' à ''.htaccess''.
 +
 +== Apachectl status broken ==
 +
 +Dokuwiki rewrite rule affect //apachectl status// command and make it return dokuwiki 404 page instead of the server-status page. You can fix that by either putting this in dokuwiki rewrite rules
 +
 +<code apache>
 +RewriteCond %{REQUEST_URI} !^/server-status$
 +</code>
 +
 +or creating an empty server-status file in dokuwiki root folder where doku.php is located. See forum post [[http://forum.dokuwiki.org/post/32858 | Apachectl status is broken with dokuwiki]]
 +
 +== 404 not found error ==
 +
 +You may need to do [[https://stackoverflow.com/questions/8551740/centos-htaccess-not-being-read | this]].
 +
 +==== IIS (ou Microsoft Azure Web App) ====
 +Activez la réécriture d'URL et insérez l'ensemble de règles approprié :
 +<code xml>
 +<rewrite>
 +<rules>
 +
 +<rule name="rule 1C" stopProcessing="true">
 + <match url="^_media/(.*)" />
 + <action type="Rewrite" url="/lib/exe/fetch.php?media={R:1}" appendQueryString="true" />
 +</rule>
 +<rule name="rule 2C" stopProcessing="true">
 + <match url="^_detail/(.*)" />
 + <action type="Rewrite" url="/lib/exe/detail.php?media={R:1}" appendQueryString="true" />
 +</rule>
 +<rule name="rule 3C" stopProcessing="true">
 + <match url="^_export/([^/]+)/(.*)" />
 + <action type="Rewrite" url="/doku.php?do=export_{R:1}&amp;id={R:2}" appendQueryString="true" />
 +</rule>
 +<rule name="rule 4C" stopProcessing="true">
 + <match url="^$" />
 + <action type="Rewrite" url="/doku.php" />
 +          <conditions>
 +            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
 +            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
 +           </conditions>
 +</rule>
 +<rule name="rule 5C" stopProcessing="true">
 + <match url="(.*)" />
 + <action type="Rewrite" url="/doku.php?id={R:1}" appendQueryString="true" />
 +          <conditions>
 +            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
 +            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
 +          </conditions>
 +</rule>
 +<rule name="rule 6C">
 + <match url="^index.php$" />
 + <action type="Rewrite" url="/doku.php" />
 +</rule>
 +</rules>
 +</rewrite>
 +
 +</code>
 +
 +**Si vous utilisez Azure Web App**, placez simplement ces lignes sous les balises <system.webServer> dans le fichier web.config (situé dans wwwroot de votre application).
 +
 +
 +=== IIS 7.0 ou supérieur ===
 +IIS 7.0 et versions ultérieures peuvent être étendus avec le module de réécriture d'URL 2.0 disponible auprès de Microsoft pour [[http://go.microsoft.com/?linkid=9722533|x86]] et [[http://go.microsoft. com/?linkid=9722532|x64]]
 +
 +Enregistrez les règles Apache ci-dessus dans un fichier .htaccess en supprimant la ligne "RewriteBase /dokuwiki". Cela ne sera pas nécessaire car nous ajouterons les règles directement à la racine du wiki.
 +
 +Dans IIS Manager, sélectionnez votre dossier Wiki, et sous IIS, sélectionnez "URL Rewrite" (si vous aviez Manager ouvert avant l'installation, une actualisation sera nécessaire)
 +
 +Dans le volet des actions sur le côté droit, choisissez "Règles d'importation"
 +
 +Pour votre fichier de configuration, sélectionnez le fichier .htaccess et importez, cela devrait vous donner 6 règles converties.
 +
 +Enfin, appuyez sur Appliquer dans le panneau Actions sur le côté droit.
 +
 +Configurez votre Wiki pour utiliser les règles .htaccess pour la réécriture et vous devriez maintenant voir vos URL réécrites.
 +
 +====Nginx ====
 +
 +Voir [[http://nginx.org/|nginx]] [[http://wiki.nginx.org/|documentation]]. Dans l'exemple suivant, la racine de notre serveur est /var/www, et nous extrayons dokuwiki vers /var/www/wiki.
 +
 +<code nginx>
 +server {
 +    listen 80;
 +    server_name example.com www.example.com;
 +
 +    #maximum file upload size is 4MB - change accordingly if needed
 +    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;
 +    }
 +}
 +</code>
 +
 +=== Remarques ===
 +
 +Si vous utilisez https, la variable de serveur HTTPS doit être définie pour permettre une liaison correcte dans dokuwiki. Ceci peut être fait
 +dans la section serveur avec :
 +<code nginx>
 +fastcgi_param HTTPS on;
 +</code>
 +
 +
 +Le mot-clé ''dernier'' des règles de réécriture avant la configuration de l'emplacement garantit que la réécriture n'a lieu qu'une seule fois. Vous devez remplacer tous les /dokuwiki/ apparaissant ci-dessus dans votre répertoire wiki par rapport au répertoire racine du serveur Web.
 +
 +Si vous copiez-collez ces configurations, assurez-vous d'ajouter des emplacements pour sécuriser certains des répertoires comme décrit sur la page [[fr:security|Security]].
 +
 +==== httpd (OpenBSD) ====
 +Voir aussi [[https://man.openbsd.org/httpd.conf.5|documentation httpd]]. Par défaut la racine du serveur est /var/www et dokuwiki est dans /var/www/dokuwiki
 +
 +
 +<code autoconf>
 +server "default" {
 +  listen on egress port 443
 +  root "/dokuwiki"
 +  directory index doku.php
 +  
 +  # Set according to upload_max_filesize and post_max_size in php.ini  
 +  connection max request body 20971520  
 +
 +  location "*.php"     { fastcgi socket "/run/php-fpm.sock" }
 +  
 +  # Block access to non-public dirs
 +  location "/data/*"   { block }
 +  location "/conf/*"   { block }
 +  location "/bin/*"    { block }
 +  location "/inc/*"    { block }
 +  location "/vendor/*" { block }
 +    
 +  # URL rewrite rules  
 +  location match "/media/(.*)" {
 +    request rewrite "/lib/exe/fetch.php?media=%1"
 +  }
 +    
 +  location match "/detail/(.*)" {
 +    request rewrite "/lib/exe/detail.php?media=%1"
 +  }
 +    
 +  location match "/export/([^/]+)/(.*)" {
 +    request rewrite "/doku.php?do=export_%1&id=%2"
 +  }
 +
 +  location match "/(lib/.*)" {
 +    request rewrite "/%1"
 +  }
 +
 +  location match "/([^lib])" {
 +    request rewrite "/doku.php?id=$DOCUMENT_URI&$QUERY_STRING"
 +  }
 +}
 +</code>
 +
 +====== Option 2 : DokuWiki ======
 +
 +Dans votre fichier conf/local.php, ajoutez ou modifiez la ligne afin qu'elle se lise :
 +
 +<code php>
 +$conf['userewrite'] = 2;
 +</code>
 +
 +Cette option ne nécessitera aucune configuration de serveur Web. Cependant, il s'appuie sur la fonctionnalité PATH_INFO du standard CGI tel qu'implémenté par Apache. IIS est [[bug>718|connu pour ne pas fonctionner]] avec ce paramètre. Cependant, les nouvelles versions d'IIS semblent fonctionner avec cela.
 +
 +===== Nettoyer l'ID de session PHP =====
 +
 +Malgré l'utilisation d'URL "propres", vous pouvez rencontrer un paramètre "DokuWiki" dans l'URL ressemblant à ceci :
 +
 +Identifiant de session PHP :
 +<code>
 +http://example.com/example?DokuWiki=c81a95369a66576982119e2a60b557a5
 +</code>
 +
 +Ce paramètre est l'ID de session PHP et est automatiquement ajouté par PHP. Cela n'a rien à voir avec la réécriture. Pour l'éviter, vous pouvez forcer PHP à toujours utiliser des cookies pour les sessions en définissant l'option ''session.use_only_cookies'' pour PHP.
 +
 +Cela se fait généralement dans le fichier de configuration php.ini :
 +
 +<code ini>
 +session.use_only_cookies=1
 +</code>
 +
 +Vous pouvez également essayer :
 +<code ini>
 +session.use_trans_sid=0
 +</code>
 +
 +====== Voir aussi ======
 +   * [[fr:tips:httpslogin|Forcer la connexion via HTTPS]]
fr/config/userewrite.1291536304.txt.gz · Dernière modification : 2010-12-05 09:05 de schplurtz

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