]> granicus.if.org Git - apache/blobdiff - docs/manual/mod/mod_rewrite.xml.fr
Merge in APR[-util] macros from branches/trunk-buildconf-noapr
[apache] / docs / manual / mod / mod_rewrite.xml.fr
index d653c637466a7d79f174f8bdf0b791aebb55d3ec..06735d64cc7582811de8dffc52f360d792e98392 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1734260:1737769 (outdated) -->
+<!-- English Revision: 1780210 -->
 <!-- French translation : Lucien GENTIS -->
 <!-- Reviewed by : Vincent Deffontaines -->
 
@@ -81,8 +81,8 @@ règles permettant de réécrire les URLs des requêtes
 
     <example><title>Exemple</title>
     <highlight language="config">
-      LogLevel alert rewrite:trace3
-      </highlight>
+LogLevel alert rewrite:trace3
+    </highlight>     
     </example>
 
     <note><title>RewriteLog</title>
@@ -133,7 +133,7 @@ moteur de réécriture</description>
       hôte virtuel pour lequel vous souhaitez utiliser des règles
       de réécriture.</p>
 
-      <p>Les directives <directive>RewriteMap</directive> du type
+      <p>Les directives <directive module="mod_rewrite">RewriteMap</directive> du type
       <code>prg</code> ne sont pas prises en compte au cours de
       l'initialisation du serveur si elle ont été définies dans un
       contexte où la directive <directive>RewriteEngine</directive> n'a
@@ -305,7 +305,28 @@ pour le moteur de réécriture</description>
       d'URL et du contexte du système de fichiers pour transformer la
       sustitution relative en URL. Par exemple, les modules
       <module>mod_userdir</module> et <module>mod_alias</module>
-      utilisent ces informations de contexte étendu.</p>
+      utilisent ces informations de contexte étendu. Disponible à partir de la
+      version 2.4.16 du serveur HTTP Apache.</p>
+      </dd>
+
+      <dt><code>LegacyPrefixDocRoot</code></dt>
+      <dd>
+
+      <p>Avant la version 2.4.26, si une substitution était une URL absolue qui
+      correspondait au serveur virtuel courant, l'URL pouvait être tout d'abord
+      réduite à sa partie chemin, puis enfin en chemin local. Comme l'URL peut
+      être réduite en chemin local, le chemin doit être préfixé par la
+      valeur de la directive DocumentRoot, ce qui permet d'interdire l'accès à
+      un fichier tel que /tmp/myfile suite à une requête pour
+      http://host/file/myfile avec la <directive
+      module="mod_rewrite">RewriteRule</directive> suivante :</p>
+      <highlight language="config">
+          RewriteRule /file/(.*) http://localhost/tmp/$1
+      </highlight>
+      <p>Cette option permet de restaurer l'ancien comportement lorsqu'un chemin
+      local obtenu à partir de la réduction d'une URL n'est pas préfixé par la
+      valeur de la directive DocumentRoot. Disponible à partir de la version
+      2.4.26 du serveur HTTP Apache.</p>
       </dd>
 
       </dl>
@@ -431,7 +452,7 @@ répertoire</description>
       <p>La directive <directive>RewriteBase</directive> permet de
       spécifier le préfixe d'URL à utiliser dans un contexte de
       répertoire (htaccess) pour les directives
-      <directive>RewriteRule</directive> qui réécrivent vers un chemin
+      <directive module="mod_rewrite">RewriteRule</directive> qui réécrivent vers un chemin
       relatif.</p>
       <p>Cette directive est <em>obligatoire</em> si vous utilisez un
       chemin relatif dans une substitution, et dans un contexte de
@@ -445,10 +466,10 @@ répertoire</description>
          une directive telle qu'<directive
          module="mod_alias">Alias</directive>).</li>
           <li>Le chemin du système de fichiers vers le répertoire
-         contenant la <directive>RewriteRule</directive>, suffixé par
+         contenant la <directive module="mod_rewrite">RewriteRule</directive>, suffixé par
          la substitution relative est aussi valide en tant qu'URL sur
          le serveur (ce qui est rare).</li>
-         <li>A partir de la version 2.4.11 du serveur HTTP Apache,
+         <li>A partir de la version 2.4.16 du serveur HTTP Apache,
          cette directive peut être omise lorsque la requête est mise en
          correspondance avec le système de fichiers via la directive
          <directive module="mod_alias">Alias</directive> ou le module
@@ -482,7 +503,7 @@ AliasMatch "^/myapp" "/opt/myapp-1.2.3"
 la réécriture soit effectuée
 </description>
 <syntax> RewriteCond
-      <em>chaîne_de_test</em> <em>expression_de_comparaison</em></syntax>
+      <em>chaîne_de_test</em> <em>expression_de_comparaison</em> [<em>drapeaux</em>]</syntax>
 <contextlist><context>server config</context><context>virtual host</context>
 <context>directory</context><context>.htaccess</context></contextlist>
 <override>FileInfo</override>
@@ -933,6 +954,13 @@ la réécriture soit effectuée
            en utilisant la variante the <strong>-L</strong> ou
            <strong>-h</strong>.</dd>
 
+            <dt><strong>-ne</strong></dt>
+            <dd>Est numériquement <strong>n</strong>on <strong>é</strong>gal à<br />
+            La <em>Chaîne de test</em> est considérée comme un entier et est
+            numériquement comparée à l'<em>expression de comparaison</em>. Vrai
+            si les deux éléments comparés sont numériquement différents.
+            Equivalent à <code>!-eq</code>.</dd>          
+
            </dl>
         </li>
 
@@ -959,7 +987,7 @@ la réécriture soit effectuée
            utiliser avec précautions car les performances du serveur
            peuvent s'en trouver affectées !</dd>
 
-           <dt><strong>-H</strong></dt>
+           <dt><strong>-h</strong></dt>
            <dd>est un lien symbolique, selon la convention bash<br />
             Voir <strong>-l</strong>.</dd>
 
@@ -1029,17 +1057,18 @@ RewriteRule ^(.+) /other/archive/$1 [R]
            </p>
 
            <highlight language="config">
-           RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'"<br />
+           RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'"
            RewriteRule "^/images" "-" [F]
            </highlight>
         </li>
+    </ol>
 
-       <li>Vous pouvez aussi définir certains drapeaux pour
+       <p>Vous pouvez aussi définir certains drapeaux pour
        l'<em>expression_de_comparaison</em> en ajoutant ces
        <strong><code>[</code><em>drapeaux</em><code>]</code></strong>
        comme troisième argument de la directive
        <code>RewriteCond</code>, où <em>drapeaux</em> est un
-       sous-ensemble séparé par des virgules des drapeaux suivants :
+       sous-ensemble séparé par des virgules des drapeaux suivants :</p>
 
       <ul>
         <li>'<strong><code>nocase|NC</code></strong>'
@@ -1081,8 +1110,7 @@ RewriteRule ...règles concernant tous ces hôtes...
        fonctionnement de l'en-tête Vary.
         </li>
       </ul>
-      </li>
-     </ol>
+      
 
       <p><strong>Exemple :</strong></p>
 
@@ -1129,46 +1157,47 @@ RewriteRule  "^/$"                 "/homepage.std.html"  [L]
 
       <p><a id="patterns" name="patterns"><em>Modèle</em></a> est une
       <a id="regexp" name="regexp">expression rationnelle</a>
-      compatible perl. Dans la première règle de réécriture,
-      l'expression est comparée au (%-decoded)
-      <a href="directive-dict.html#Syntax">chemin de l'URL</a> de la
-      requête, ou, dans un contexte de répertoire (voir
-      ci-dessous), au chemin de l'URL relativement à ce contexte de
-      répertoire. Les expressions suivantes sont comparées à la sortie de
-      la dernière règle de réécriture qui
-      correspondait.</p>
+      compatible perl. Ce avec quoi ce modèle est comparé dépend de l'endroit où
+      la directive <directive>RewriteRule</directive> est définie.</p>
 
 <note><title><a id="what_is_matched" name="what_is_matched">Qu'est-ce qui est comparé ?</a></title>
 
-      <p>Dans un contexte de serveur virtuel <directive
+<ul>
+      <li><p>Dans un contexte de serveur virtuel <directive
       module="core">VirtualHost</directive>, le <em>modèle</em> est tout
       d'abord comparé à la portion de l'URL située entre le nom d'hôte
       éventuellement accompagné du port, et la chaîne de paramètres (par
-      exemple "/app1/index.html").</p>
-
-      <p>Dans les contextes de répertoire <directive
-      module="core">Directory</directive> et htaccess, le
-      <em>modèle</em> est tout d'abord comparé au chemin du <em>système
-      de fichiers</em>, après suppression du préfixe ou chemin de base
-      ayant conduit le serveur vers la règle <directive>RewriteRule</directive> (par
-      exemple "app1/index.html" ou
-      "index.html" selon l'endroit où les directives sont définies).</p>
+      exemple "/app1/index.html"). Il s'agit du <a
+      href="directive-dict.html#Syntax">URL-path</a> décodé de sa valeur "%xx".</p></li>
+
+      <li><p>Dans un contexte de répertoire (sections <directive
+      module="core">Directory</directive> et fichiers .htaccess), le
+      <em>Modèle</em> est comparé avec une partie de chemin ; par exemple une
+      requête pour "/app1/index.html" entraînera une comparaison avec
+      "app1/index.html" ou "index.html" selon l'endroit où la directive
+      <directive>RewriteRule</directive> est définie.</p>
+
+      <p>Le chemin où la règle est défini est supprimé du chemin correspondant
+      du système de fichiers avant comparaison (jusqu'au slash final compris).
+      En conséquence de cette suppression, les règles définies dans
+      ce contexte n'effectuent des comparaisons qu'avec la portion du chemin
+      du système de fichiers "en dessous" de l'endroit où la règle est définie.</p>
+
+      <p>Le chemin correspondant actuel du système de fichiers est déterminé par
+      des directives telles que <directive>DocumentRoot</directive> et
+      <directive>Alias</directive>, ou même le résultat de substitutions dans
+      des règles <directive>RewriteRule</directive> précédentes.  
+      </p>
+      </li>
 
-      <p>Si vous souhaitez faire une comparaison sur le nom
+      <li><p>Si vous souhaitez faire une comparaison sur le nom
       d'hôte, le port, ou la chaîne de requête, utilisez une
       directive <directive module="mod_rewrite">RewriteCond</directive>
       comportant respectivement les variables
       <code>%{HTTP_HOST}</code>, <code>%{SERVER_PORT}</code>, ou
-      <code>%{QUERY_STRING}</code>.</p>
-
-      <p>Dans tous les cas, il faut garder à l'esprit que les expressions
-      rationnelles permettent de rechercher des correspondances de sous-chaînes.
-      En d'autres termes, l'expression rationnelle n'a pas besoin de correspondre à
-      l'ensemble de la chaîne, mais seulement à la partie que vous souhaitez
-      voir correspondre. Ainsi, l'utilisation de l'expression <code>.</code> est
-      souvent suffisante et préférable à <code>.*</code>, et l'expression
-      <code>abc</code> <strong>n'est pas</strong> identique à l'expression
-      <code>^abc$</code>.</p>
+      <code>%{QUERY_STRING}</code>.</p></li>
+</ul>
+      
 </note>
 
 <note><title>Réécritures dans un contexte de répertoire</title>
@@ -1187,22 +1216,15 @@ niveau du répertoire d'un utilisateur, vous ne pouvez pas utiliser le
 moteur de réécriture. Cette restriction a été instaurée à des fins de
 sécurité.</li>
 
-<li>Lorsqu'on utilise le moteur de réécriture dans un fichier
-<code>.htaccess</code>, le chemin de base du répertoire courant (qui est
-toujours le même pour ce même répertoire) est automatiquement
-<em>supprimé</em> au cours de la comparaison avec le modèle de la règle
-de réécriture, et automatiquement <em>ajouté</em> lorsqu'une
-substitution relative (ne débutant pas par un slash ou un nom de
-protocole) arrive à la fin d'un jeu de règles. Voir la directive
-<directive module="mod_rewrite">RewriteBase</directive> pour plus de
-détails à propos de l'ajout du préfixe après les substitutions
-relatives.</li>
+<li>Voir la directive
+<directive module="mod_rewrite">RewriteBase</directive> pour plus de détails à
+propos de l'ajout du préfixe après les substitutions relatives.</li>
 
 <li>Si vous souhaitez effectuer une comparaison en prenant en compte
 l'intégralité du
 chemin de l'URL dans un contexte de répertoire (htaccess), vous devez
 utiliser la variable <code>%{REQUEST_URI}</code> dans la directive
-<directive>RewriteCond</directive>.</li>
+<directive module="mod_rewrite">RewriteCond</directive>.</li>
 
 <li>Le prefixe supprimé se termine toujours par un slash, ce qui
 signifie que la comparaison s'effectue avec une chaîne qui ne comporte
@@ -1305,7 +1327,7 @@ substitution !
 
       </dl>
 
-      <p>En plus du texte, la chaîne <em>Substition</em> peut
+      <p>En plus du texte, la chaîne <em>Substitution</em> peut
       comporter :</p>
 
       <ol>
@@ -1328,8 +1350,9 @@ substitution !
       seront remplacés par le contenu du <strong>N</strong>ème groupe
       du <em>Modèle</em> qui correspondait. Les variables du serveur
       sont les mêmes que dans la <em>Chaîne_de_test</em> d'une
-      directive <code>RewriteCond</code>. Les fonctions de comparaison
-      sont issues de la directive <code>RewriteMap</code> dans la
+      directive <directive module="mod_rewrite">RewriteCond</directive>. Les
+      fonctions de comparaison sont issues de la directive <directive
+      module="mod_rewrite">RewriteMap</directive> dans la
       section de laquelle elles sont décrites. Ces trois types de
       variables sont évaluées dans l'ordre ci-dessus.</p>
 
@@ -1366,7 +1389,7 @@ substitution !
       des
       <strong><code>[</code><em>drapeaux</em><code>]</code></strong>
       comme troisième argument de la directive
-      <code>RewriteRule</code>. Séparés par des virgules au sein d'une
+      <directive>RewriteRule</directive>. Séparés par des virgules au sein d'une
       liste encadrée par des crochets, les <em>drapeaux</em> peuvent
       être choisis dans la table suivante. Vous trouverez plus de
       détails, et des exemples pour chaque drapeau dans le <a