]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
fr doc rebuild.
authorLucien Gentis <lgentis@apache.org>
Sun, 12 Jul 2026 13:21:08 +0000 (13:21 +0000)
committerLucien Gentis <lgentis@apache.org>
Sun, 12 Jul 2026 13:21:08 +0000 (13:21 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1936087 13f79535-47bb-0310-9956-ffa450edef68

27 files changed:
docs/manual/mod/mod_dbd.html.fr.utf8
docs/manual/mod/mod_dbd.xml.meta
docs/manual/mod/mod_heartmonitor.html.fr.utf8
docs/manual/mod/mod_heartmonitor.xml.meta
docs/manual/mod/mod_proxy.html.fr.utf8
docs/manual/mod/mod_proxy.xml.meta
docs/manual/mod/mod_rewrite.html.fr.utf8
docs/manual/mod/mod_rewrite.xml.meta
docs/manual/mod/mod_unique_id.html.fr.utf8
docs/manual/mod/mod_unique_id.xml.meta
docs/manual/mod/quickreference.html.fr.utf8
docs/manual/rewrite/avoid.html.fr.utf8
docs/manual/rewrite/avoid.xml.meta
docs/manual/rewrite/flags.html.fr.utf8
docs/manual/rewrite/flags.xml.meta
docs/manual/rewrite/htaccess.html.fr.utf8
docs/manual/rewrite/htaccess.xml.meta
docs/manual/rewrite/remapping.html.fr.utf8
docs/manual/rewrite/remapping.xml.meta
docs/manual/rewrite/rewritemap.html.fr.utf8
docs/manual/rewrite/rewritemap.xml.meta
docs/manual/rewrite/tech.html.fr.utf8
docs/manual/rewrite/tech.xml.meta
docs/manual/rewrite/vhosts.html.fr.utf8
docs/manual/rewrite/vhosts.xml.meta
docs/manual/suexec.html.fr.utf8
docs/manual/suexec.xml.meta

index deb056dc4843bdabc856aee21b6035b2148e3b68..e3846f65f62f4c1f3ac4ec7a681658682775f6bd 100644 (file)
@@ -29,8 +29,6 @@
 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_dbd.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/mod/mod_dbd.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a></p>
 </div>
-<div class="outofdate">Cette traduction peut &ecirc;tre p&eacute;rim&eacute;e. V&eacute;rifiez la version
-            anglaise pour les changements r&eacute;cents.</div>
 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Gestion des connexions &agrave; une base de donn&eacute;es SQL</td></tr>
 <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
 <tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur&nbsp;de&nbsp;Module:</a></th><td>dbd_module</td></tr>
index 9131911db28ea060a7994ad6acad12aa4f1acb71..bf4a2e0a23590d31cd1ea08e8759151f4774d759 100644 (file)
@@ -8,6 +8,6 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
   </variants>
 </metafile>
index 82dbb476af0ef800c972a480e0d5c817c182fdc3..ad744ade203f1537beff4af7ef7e8c2f5a23605e 100644 (file)
@@ -29,8 +29,6 @@
 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_heartmonitor.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/mod/mod_heartmonitor.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a></p>
 </div>
-<div class="outofdate">Cette traduction peut &ecirc;tre p&eacute;rim&eacute;e. V&eacute;rifiez la version
-            anglaise pour les changements r&eacute;cents.</div>
 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Moniteur centralis&eacute; pour les serveurs d'origine mod_heartbeat</td></tr>
 <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Exp&eacute;rimental</td></tr>
 <tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur&nbsp;de&nbsp;Module:</a></th><td>heartmonitor_module</td></tr>
@@ -111,10 +109,11 @@ serveur HTTP Apache</td></tr>
     contr&ocirc;ler la quantit&eacute; de m&eacute;moire partag&eacute;e allou&eacute;e pour le stockage
     des donn&eacute;es heartbeat lorsqu'on utilise
     <code class="module"><a href="../mod/mod_slotmem_shm.html">mod_slotmem_shm</a></code>.</p>
-    <p>Pour utiliser un stockage de type fichier bidimensionnel (flat-file)
-    lorque le module <code class="module"><a href="../mod/mod_slotmem_shm.html">mod_slotmem_shm</a></code> n'est pas charg&eacute;, cette
-    directive doit &ecirc;tre d&eacute;finie &agrave; 0. La valeur doit &ecirc;tre soit &eacute;gale &agrave; 0, soit
-    sup&eacute;rieure ou &eacute;gale &agrave; 10.</p>
+
+    <p>D&eacute;finissez cette directive &agrave; <code>0</code> pour utiliser un stockage de
+    type fichier bidimensionnel (flat-file) au lieu de la m&eacute;moire partag&eacute;e
+    (c&rsquo;est-&agrave;-dire sans charger <code class="module"><a href="../mod/mod_slotmem_shm.html">mod_slotmem_shm</a></code>). Lorsqu&rsquo;on
+    utilise la m&eacute;moire partag&eacute;e, la valeur doit &ecirc;tre sup&eacute;rieure ou &eacute;gale &agrave;&nbsp;10.</p>
 
 </div>
 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
index d0c5b2fb35054ccf4277e4b824baad3418b6d0cc..269a7db4894c37896d1859bfc6f981f603f57307 100644 (file)
@@ -8,6 +8,6 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
   </variants>
 </metafile>
index 8a1846ec11a36ea38311feb069dc76ffdaf8f414..ac70b99605d046f3e51233ae4e1a897ab6fd2c8c 100644 (file)
@@ -30,8 +30,6 @@
 <a href="../fr/mod/mod_proxy.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a> |
 <a href="../ja/mod/mod_proxy.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a></p>
 </div>
-<div class="outofdate">Cette traduction peut &ecirc;tre p&eacute;rim&eacute;e. V&eacute;rifiez la version
-            anglaise pour les changements r&eacute;cents.</div>
 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Serveur mandataire/passerelle multi-protocole</td></tr>
 <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
 <tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur&nbsp;de&nbsp;Module:</a></th><td>proxy_module</td></tr>
index f0185375d448127624a8715f7540d52668653323..38a79fdda73051e6f035124b21c4af3bff8e6129 100644 (file)
@@ -8,7 +8,7 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
     <variant outdated="yes">ja</variant>
   </variants>
 </metafile>
index a4ebd97eab1fddb7a6b60e1f0228462aec8dfa19..d0489ee8f9b26e6c43cb877bbd13f62b2d6604c6 100644 (file)
@@ -29,8 +29,6 @@
 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_rewrite.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/mod/mod_rewrite.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a></p>
 </div>
-<div class="outofdate">Cette traduction peut &ecirc;tre p&eacute;rim&eacute;e. V&eacute;rifiez la version
-            anglaise pour les changements r&eacute;cents.</div>
 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Ce module fournit un moteur de r&eacute;&eacute;criture &agrave; base de
 r&egrave;gles permettant de r&eacute;&eacute;crire les URLs des requ&ecirc;tes
 &agrave; la vol&eacute;e</td></tr>
@@ -50,17 +48,20 @@ r&egrave;gles permettant de r&eacute;&eacute;crire les URLs des requ&ecirc;tes
       <p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> fournit une m&eacute;thode souple et puissante
       pour manipuler les URLs en utilisant un nombre illimit&eacute; de r&egrave;gles. Chaque
       r&egrave;gle peut &ecirc;tre associ&eacute;e &agrave; un nombre illimit&eacute; de conditions, afin de vous
-      permettre de r&eacute;&eacute;crire les URLs en fonction de variables du serveur, de
-      variables d'environnement, de cookies, d'en-t&ecirc;tes HTTP, ou de rep&egrave;res
-      temporels.</p>
-      <p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> agit sur la totalit&eacute; de l'URL, ou de toute
-      partie de cette derni&egrave;re, y compris PATH_INFO ou QUERY_STRING.</p>
-
+      permettre de r&eacute;&eacute;crire les URLs en fonction de <a href="#rewritecond">variables du serveur</a> (y compris les en-t&ecirc;tes
+      HTTP, les d&eacute;tails de la connexion et les horodatages), de
+      variables d'environnement ou d&rsquo;autres propri&eacute;t&eacute;s de la requ&ecirc;te. Les r&egrave;gles
+      peuvent agir sur le <a href="directive-dict.html#Syntax">chemin d&rsquo;URL</a>
+      (y compris toute <a href="core.html#acceptpathinfo">information en fin de
+      nom de chemin</a>) et peut aussi modifier la <a href="../expr.html#vars">cha&icirc;ne de param&egrave;tres</a>.
+      </p>
+      
       <p>Une r&egrave;gle de r&eacute;&eacute;criture peut &ecirc;tre invoqu&eacute;e dans les fichiers de
-      configuration globale du serveur ou dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de r&eacute;pertoire</a>. Le chemin g&eacute;n&eacute;r&eacute; par
-      une r&egrave;gle de r&eacute;&eacute;criture peut inclure une cha&icirc;ne de param&egrave;tres, ou peut
-      renvoyer vers un traitement secondaire interne, une redirection vers une
-      requ&ecirc;te externe ou vers le mandataire interne.</p>
+      configuration globale du serveur ou dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de r&eacute;pertoire</a>. La cha&icirc;ne de
+      substitution d&rsquo;une r&egrave;gle de r&eacute;&eacute;criture peut comporter une cha&icirc;ne de
+      param&egrave;tres et une r&egrave;gle peut renvoyer vers un traitement secondaire
+      interne, une redirection vers une requ&ecirc;te externe ou vers le mandataire
+      interne.</p>
 
       <p>Vous trouverez plus de d&eacute;tails, discussions et exemples dans le <a href="../rewrite/">Guide d&eacute;taill&eacute; sur mod_rewrite</a>.</p>
 </div>
@@ -76,7 +77,10 @@ r&egrave;gles permettant de r&eacute;&eacute;crire les URLs des requ&ecirc;tes
 <li><img alt="" src="../images/down.gif"> <a href="#rewriteoptions">RewriteOptions</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#rewriterule">RewriteRule</a></li>
 </ul>
-<h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&amp;list_id=144532&amp;product=Apache%20httpd-2&amp;query_format=specific&amp;order=changeddate%20DESC%2Cpriority%2Cbug_severity&amp;component=mod_rewrite">Probl&egrave;mes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_rewrite">Signaler un bug</a></li></ul></div>
+<h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&amp;list_id=144532&amp;product=Apache%20httpd-2&amp;query_format=specific&amp;order=changeddate%20DESC%2Cpriority%2Cbug_severity&amp;component=mod_rewrite">Probl&egrave;mes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_rewrite">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
+<ul class="seealso">
+<li><a href="rewrite/index.html">Guide de mod_rewrite</a></li>
+</ul></div>
 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="logging">Journalisation <a title="Lien permanent" href="#logging" class="permalink">&para;</a></h2>
@@ -104,7 +108,7 @@ r&egrave;gles permettant de r&eacute;&eacute;crire les URLs des requ&ecirc;tes
       <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> vont probablement rechercher en vain les
       directives <code>RewriteLog</code> et <code>RewriteLogLevel</code>. Depuis
       la sortie de httpd 2.4, ces directives ont en effet &eacute;t&eacute; remplac&eacute;es par une
-      configuration de la journalisation par module &agrave; l'aide de la directive
+      configuration de la journalisation par module &agrave; l&rsquo;aide de la directive
       <code class="directive"><a href="../mod/core.html#loglevel">LogLevel</a></code>.  </p>
 
       <p>Pour extraire les traces sp&eacute;cifiques &agrave;
@@ -141,7 +145,7 @@ r&eacute;pertoire</td></tr>
          <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> (c'est &agrave;
          dire que pour y acc&eacute;der, il n'est pas n&eacute;cessaire d'utiliser
          une directive telle qu'<code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>).</li>
-         <li>Le chemin de r&eacute;pertoire auquel la <code class="directive"><a href="#rewriterule">RewriteRule</a></code> s'applique, suffix&eacute; par
+         <li>Le chemin de r&eacute;pertoire auquel la <code class="directive"><a href="#rewriterule">RewriteRule</a></code> s&rsquo;applique, suffix&eacute; par
          la substitution relative est aussi valable en tant que chemin d'URL
          sur le serveur (ce qui est rare).</li>
          <li>A partir de la version 2.4.16 du serveur HTTP Apache,
@@ -160,7 +164,7 @@ r&eacute;pertoire</td></tr>
 la r&eacute;&eacute;criture soit effectu&eacute;e
 </td></tr>
 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code> RewriteCond
-      <em>cha&icirc;ne_de_test</em> <em>expression_de_comparaison</em> [<em>drapeaux</em>]</code></td></tr>
+      <em>TestString</em> [!]<em>CondPattern</em> [<em>flags</em>]</code></td></tr>
 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
 <tr><th><a href="directive-dict.html#Override">Surcharges autoris&eacute;es:</a></th><td>FileInfo</td></tr>
 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
@@ -174,39 +178,63 @@ la r&eacute;&eacute;criture soit effectu&eacute;e
       <strong>et</strong> si l'URI correspond au mod&egrave;le sp&eacute;cifi&eacute; dans la
       r&egrave;gle.</p>
 
+      <p>Si <em>CondPattern</em> est pr&eacute;fix&eacute; par un <code>!</code>, la condition
+      ne sera &eacute;valu&eacute;e &agrave; vrai que si <em>CondPattern</em> ne correspond pas.</p>
+
+      
+      
+      
+
+      <p><a id="rewritecond-teststring" name="rewritecond-teststring"></a><strong>TestString</strong></p>
+
       <p><em>TestString</em> est une cha&icirc;ne qui peut contenir les
       extensions suivantes en plus du texte simple :</p>
 
-      <ul>
-        <li>
-          <strong>r&eacute;f&eacute;rences arri&egrave;res de r&egrave;gle de r&eacute;&eacute;criture</strong> :
-         ce sont des r&eacute;f&eacute;rences arri&egrave;res de la forme
-         <strong><code>$N</code></strong> (0 &lt;= N &lt;= 9). $1 &agrave; $9
-         permettent d'acc&eacute;der aux parties regroup&eacute;es (entre
-         parenth&egrave;ses) du mod&egrave;le, issues de la <code>RewriteRule</code>
-         concern&eacute;e par le jeu de conditions <code>RewriteCond</code>
-         courant. $0 donne acc&egrave;s &agrave; l'ensemble de la cha&icirc;ne
-         correspondant au mod&egrave;le.</li>
-        <li>
-          <strong>R&eacute;f&eacute;rences arri&egrave;res de condition de r&eacute;&eacute;criture
-         </strong> : ce sont des r&eacute;f&eacute;rences arri&egrave;res de la forme
-         <strong><code>%N</code></strong> (0 &lt;= N &lt;= 9). %1 &agrave; %9
-         permettent d'acc&eacute;der aux parties regroup&eacute;es (entre
-         parenth&egrave;ses) du mod&egrave;le, issues de la derni&egrave;re
-         condition <code>RewriteCond</code> satisfaite du jeu de conditions <code>RewriteCond</code>
-         courant. %0 donne acc&egrave;s &agrave; l'ensemble de la cha&icirc;ne
-         correspondant au mod&egrave;le.</li>
-        <li>
-          <strong>extensions de table de r&eacute;&eacute;criture</strong> :
-         ce sont des extensions de la forme <strong><code>${nomTable:cl&eacute;|d&eacute;faut}</code></strong>. Voir la <a>href="#mapfunc"&gt;documentation sur RewriteMap</a>
-          pour plus de d&eacute;tails.
-        </li>
-        <li>
-          <strong>Variables du serveur</strong> :
-         ce sont des variables de la forme
-         <strong><code>%{</code> <em>NAME_OF_VARIABLE</em> <code>}</code></strong>,
-            o&ugrave; <em>NOM_DE_VARIABLE</em> peut contenir une cha&icirc;ne issue
-           de la liste suivante :
+     
+
+      <p><a id="rewritecond-backreferences" name="rewritecond-backreferences"></a><strong>R&eacute;f&eacute;rences arri&egrave;res</strong></p>
+
+      <dl>
+        <dt><strong><code>$N</code></strong> &mdash; R&eacute;f&eacute;rences arri&egrave;res des
+       r&egrave;gles RewriteRule</dt>
+       <dd>Les r&eacute;f&eacute;rences arri&egrave;res de la forme <code>$N</code> (0 &lt;= N &lt;=
+       9). $1 &agrave; $9 permettent d'acc&eacute;der aux parties regroup&eacute;es (entre
+       parenth&egrave;ses) du mod&egrave;le, issues de la <code>RewriteRule</code> concern&eacute;e
+       par le jeu de conditions <code>RewriteCond</code> courant. $0 donne
+       acc&egrave;s &agrave; l'ensemble de la cha&icirc;ne correspondant au mod&egrave;le.</dd>
+
+       <dt><strong><code>%N</code></strong> &mdash; R&eacute;f&eacute;rences arri&egrave;res des
+         conditions RewriteCond</dt>
+       <dd>Les r&eacute;f&eacute;rences arri&egrave;res de la forme <code>%N</code> (0 &lt;= N &lt;=
+       9). %1 &agrave; %9 permettent d'acc&eacute;der aux parties regroup&eacute;es (entre
+       parenth&egrave;ses) du mod&egrave;le, issues de la derni&egrave;re condition
+       <code>RewriteCond</code> satisfaite du jeu de conditions
+       <code>RewriteCond</code> courant. %0 donne acc&egrave;s &agrave; l'ensemble de la
+       cha&icirc;ne correspondant au mod&egrave;le.</dd>
+
+      </dl>
+
+      <div class="note">Les r&eacute;f&eacute;rences arri&egrave;res ne sont d&eacute;finies que si le motif correspond.
+      Si le motif est pr&eacute;fix&eacute; de <code>!</code>, aucune r&eacute;f&eacute;rence arri&egrave;re
+      ne sera donc d&eacute;finie. Voir le document <a href="../rewrite/tech.html#InternalRuleset">La mani&egrave;re dont le jeu de
+      r&egrave;gles est appliqu&eacute;</a> pour plus de d&eacute;tails &agrave; propos de l&rsquo;ordre dans
+      lequel les motifs sont mis en correspondance et les r&eacute;f&eacute;rences arri&egrave;res
+      d&eacute;finies.</div>
+
+      
+
+      <p><a id="rewritecond-mapexpansions" name="rewritecond-mapexpansions"></a><strong>D&eacute;veloppement des mappages RewriteMap</strong></p>
+
+      <p>Ce sont des d&eacute;veloppements de la forme
+      <strong><code>${mapname:key|default}</code></strong>. Voir la <a href="#mapfunc">documentation de RewriteMap</a> pour plus de d&eacute;tails.</p>
+
+      
+
+      <p><a id="rewritecond-servervars" name="rewritecond-servervars"></a><strong>Le serveur et les variables CGI</strong></p>
+
+      <p>Ce sont des variables de la forme <strong><code>%{</code>
+      <em>NAME_OF_VARIABLE</em> <code>}</code></strong> o&ugrave;
+      <em>NAME_OF_VARIABLE</em> peut &ecirc;tre une des cha&icirc;nes de la liste suivante&nbsp;:</p>        
 
           <table>
           
@@ -231,7 +259,7 @@ la r&eacute;&eacute;criture soit effectu&eacute;e
                 CONTEXT_PREFIX<br>
                  CONTEXT_DOCUMENT_ROOT<br>
                  IPV6<br>
-                 PATH_INFO<br>
+                 <a class="glossarylink" href="../glossary.html#pathinfo" title="voir glossaire">PATH_INFO</a><br>
                  QUERY_STRING<br>
                  REMOTE_ADDR<br>
                  REMOTE_HOST<br>
@@ -292,12 +320,35 @@ la r&eacute;&eacute;criture soit effectu&eacute;e
                <code>struct tm</code> du syst&egrave;me Unix. La plupart d'entre elles
                sont document&eacute;es dans la <a href="../expr.html#vars">documentation des expressions</a>, dans
                la <a href="../env.html">documentation des variables
-               d'environnement</a> ou dans la sp&eacute;cification de
+               d&rsquo;environnement</a> ou dans la sp&eacute;cification de
                CGI (<a href="https://www.rfc-editor.org/rfc/rfc3875">RFC 3875</a>).</p>
 
                <p>SERVER_NAME et SERVER_PORT d&eacute;pendent respectivement
                des valeurs des directives <code class="directive"><a href="../mod/core.html#usecanonicalname">UseCanonicalName</a></code> et <code class="directive"><a href="../mod/core.html#usecanonicalphysicalport">UseCanonicalPhysicalPort</a></code>.</p>
 
+               <p>Les variables SCRIPT_FILENAME et REQUEST_FILENAME contiennent
+               la m&ecirc;me valeur &mdash;&nbsp;la valeur du champ <code>filename</code> de la
+               structure interne <code>request_rec</code> du serveur HTTP
+               Apache. Le premier nom est plus connu en tant que nom de
+               variable CGI alors que le second est la contrepartie appropri&eacute;e
+               de REQUEST_URI (qui contient la valeur du champ <code>uri</code>
+               de la structure <code>request_rec</code>).</p>
+
+                <p>Si une substitution se produit et que la r&eacute;&eacute;criture continue,
+               la valeur des deux variables sera mise &agrave; jour en cons&eacute;quence.</p>
+
+               <p>Si elles sont utilis&eacute;es dans un contexte global au serveur
+               (c&rsquo;est-&agrave;-dire avant que la requ&ecirc;te ne soit mise en parall&egrave;le
+               avec le syst&egrave;me de fichiers), SCRIPT_FILENAME et
+               REQUEST_FILENAME ne peuvent pas contenir le chemin complet du
+               syst&egrave;me de fichiers local, car le chemin est inconnu &agrave; ce
+               stade du traitement. Dans ce cas, les deux variables
+               contiendront initialement la valeur de REQUEST_URI. Pour obtenir
+               le chemin complet du syst&egrave;me de fichiers local correspondant &agrave;
+               la requ&ecirc;te, Utilisez une projection vers l&rsquo;avant &agrave; base d&rsquo;URL
+               <code>%{LA-U:REQUEST_FILENAME}</code> pour d&eacute;terminer la valeur
+               finale de REQUEST_FILENAME.</p>
+
                <p>Parmi les variables
                sp&eacute;cifiques &agrave; <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, ou trouve les suivantes :</p>
         
@@ -370,8 +421,8 @@ la r&eacute;&eacute;criture soit effectu&eacute;e
                  recoder, passez-la &agrave; la <a href="#mapfunc">fonction de
                  mappage</a> "escape".
                  Notez que cette variable de serveur est distincte de la
-                 variable d'environnement CGI de m&ecirc;me nom&nbsp;: dans un contexte
-                 CGI, <code>REQUEST_URI</code> contient l'URI original complet
+                 variable d&rsquo;environnement CGI de m&ecirc;me nom&nbsp;: dans un contexte
+                 CGI, <code>REQUEST_URI</code> contient l&rsquo;URI original complet
                  de la requ&ecirc;te, y compris la cha&icirc;ne de param&egrave;tres. Voir la
                  directive <code class="directive"><a href="../mod/core.html#cgivar">CGIVar</a></code> pour les
                  d&eacute;tails.
@@ -387,70 +438,36 @@ la r&eacute;&eacute;criture soit effectu&eacute;e
                  diff&eacute;rence de la plupart des variables suivantes.</dd>
                 </dl>
 
-        </li>
-      </ul>
+      
 
-      <p>Si la <em>cha&icirc;ne_de_test</em> contient la valeur sp&eacute;ciale
-      <code>expr</code>, <em>expression_de_comparaison</em> sera trait&eacute;
-      en tant qu'expression rationnelle de type <a href="../expr.html">ap_expr</a>. Si des en-t&ecirc;tes HTTP sont
-      r&eacute;f&eacute;renc&eacute;s dans l'expression rationnelle, et si le drapeau
-      <code>novary</code> n'est pas activ&eacute;, ils seront ajout&eacute;s &agrave;
-      l'en-t&ecirc;te Vary.</p>
+      <p><a id="rewritecond-prefixed" name="rewritecond-prefixed"></a><strong>Consultation de variables pr&eacute;fix&eacute;es</strong></p>
+      
+      <p>En plus des variables de serveur ci-avant, la syntaxe
+      <code>%{<em>PREFIX</em>:<em>name</em>}</code> permet d&rsquo;acc&eacute;der &agrave; des
+      ressources suppl&eacute;mentaires&nbsp;:</p>
 
-      <p>Autres points &agrave; conna&icirc;tre ::</p>
-      <ol>
-        <li>
-        <p>Les variables <code>SCRIPT_FILENAME</code> et
-       <code>REQUEST_FILENAME</code> contiennent toutes deux la valeur
-       du champ <code>filename</code> de la
-       structure interne <code>request_rec</code>du serveur HTTP Apache.
-       Le premier nom correspond au nom de variable bien connu CGI,
-       alors que le second est l'&eacute;quivalent de REQUEST_URI (qui
-       contient la valeur du champ <code>uri</code> de
-       <code>request_rec</code>).</p>
-        <p>Si une substitution intervient et si la r&eacute;&eacute;criture se
-       poursuit, la valeur des deux variables sera mise &agrave; jour en
-       cons&eacute;quence.</p>
-        <p>Dans le contexte du serveur principal (c'est &agrave; dire avant que
-       la requ&ecirc;te ne soit mise en correspondance avec le syst&egrave;me de
-       fichiers), SCRIPT_FILENAME et REQUEST_FILENAME  ne peuvent pas
-       contenir le chemin entier dans le syst&egrave;me de fichiers local car
-       ce chemin b'est pas connu &agrave; ce stade du traitement. Dans ce cas,
-       les deux variables contiendront la valeur de REQUEST_URI. Pour
-       obtenir le chemin complet de la requ&ecirc;te dans le syst&egrave;me de
-       fichiers local dans le contexte du serveur principal, utilisez une
-       r&eacute;f&eacute;rence avant &agrave; base d'URL
-       <code>%{LA-U:REQUEST_FILENAME}</code> pour d&eacute;terminer la valeur
-       finale de REQUEST_FILENAME.</p></li>
-
-
-        <li>
-       <code>%{ENV:<em>variable</em>}</code>, o&ugrave; <em>variable</em> peut
-       correspondre &agrave; une variable d'environnement quelconque.</li>
-       <li>
-        <code>%{ENV:variable}</code> est aussi disponible, o&ugrave;
-       <em>variable</em> peut correspondre &agrave; toute variable
-       d'environnement. Peut &ecirc;tre consult&eacute; via des structures internes
+      <dl>
+        <dt><strong><code>%{ENV:variable}</code></strong></dt>
+        <dd>O&ugrave; <em>variable</em> peut correspondre &agrave; n&rsquo;importe quelle variable
+       d&rsquo;environnement. Peut &ecirc;tre consult&eacute; via des structures internes
        d'Apache httpd et (si on ne les trouve pas ici) via la fonction
        <code>getenv()</code> &agrave; partir du processus du serveur Apache
-       httpd.</li>
-
-        <li>Que <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> soit charg&eacute; ou non, on peut
-       utiliser <code>%{SSL:variable}</code>, o&ugrave; <em>variable</em>
-       peut &ecirc;tre remplac&eacute; par le nom d'une
-       <a href="mod_ssl.html#envvars">variable
-       d'environnement SSL</a> . Si <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> n'est pas
-       charg&eacute;, cette variable contiendra toujours une cha&icirc;ne vide.
+       httpd.</dd>
+
+        <dt><strong><code>%{SSL:variable}</code></strong></dt>
+        <dd>O&ugrave; <em>variable</em> est le nom d&rsquo;une <a href="mod_ssl.html#envvars">variable d&rsquo;environnement SSL</a>. Cette
+       variable peut &ecirc;tre utilis&eacute;e que <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> soit charg&eacute; ou
+       non, mais elle sera toujours d&eacute;velopp&eacute;e en une cha&icirc;ne vide si
+       <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> n&rsquo;est pas charg&eacute;.     
        Exemple : <code>%{SSL:SSL_CIPHER_USEKEYSIZE}</code> pourra
        contenir la valeur <code>128</code>. Ces variables sont
        disponibles m&ecirc;me si l'option <code>StdEnvVars</code> de la
        directive <code class="directive"><a href="../mod/mod_ssl.html#ssloptions">SSLOptions</a></code> n'a
-       pas &eacute;t&eacute; d&eacute;finie.</li>
+       pas &eacute;t&eacute; d&eacute;finie.</dd>
 
-       <li>
-        On peut utiliser <code>%{HTTP:en-t&ecirc;te}</code>, o&ugrave;
-       <em>en-t&ecirc;te</em> peut correspondre &agrave; tout nom d'en-t&ecirc;te MIME
-       HTTP, pour extraire la valeur d'un en-t&ecirc;te envoy&eacute; dans la
+       <dt><strong><code>%{HTTP:header}</code></strong></dt>
+        <dd>O&ugrave; <em>header</em> peut correspondre &agrave; n&rsquo;importe quel nom d&rsquo;en-t&ecirc;te
+       MIME HTTP. Cette variable peut toujours &ecirc;tre utilis&eacute;e pour obtenir la valeur d'un en-t&ecirc;te envoy&eacute; dans la
        requ&ecirc;te HTTP. Par exemple, <code>%{HTTP:Proxy-Connection}</code>
        contiendra la valeur de l'en-t&ecirc;te HTTP
        "<code>Proxy-Connection:</code>".
@@ -464,105 +481,130 @@ la r&eacute;&eacute;criture soit effectu&eacute;e
        logique de cout-circuit si le drapeau
        '<strong><code>ornext|OR</code></strong>' est utilis&eacute;, et que de
        ce fait, certaines d'entre elles ne seront pas &eacute;valu&eacute;es.</p>
-       </li>
-
-        <li>A des fins de r&eacute;f&eacute;rence avant, on peut utiliser,
-       <a id="LA-U" name="LA-U"><code>%{LA-U:variable}</code></a>, qui
-       permet d'effectuer une sous-requ&ecirc;te interne &agrave; base d'URL, afin
-       de d&eacute;terminer la valeur finale de <em>variable</em>. Ceci permet
-       d'acc&eacute;der &agrave; la valeur d'une variable pour la r&eacute;&eacute;criture inconnue
-       &agrave; ce stade du traitement, mais qui sera d&eacute;finie au
-       cours d'une phase ult&eacute;rieure.
-       <p>Par exemple, pour effectuer une r&eacute;&eacute;criture d&eacute;pendant de la
-       variable <code>REMOTE_USER</code> dans le contexte du serveur
-       principal (fichier <code>httpd.conf</code>), vous devez utiliser
-       <code>%{LA-U:REMOTE_USER}</code> - cette variable est d&eacute;finie
-       par la phase d'autorisation qui intervient <em>apr&egrave;s</em> la
-       phase de traduction d'URL (pendant laquelle <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
-       op&egrave;re).</p>
-       <p>Par contre, comme <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> impl&eacute;mente son
-       <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de r&eacute;pertoire</a> (fichier
-       <code>.htaccess</code>) via la phase Fixup de l'API, et comme la phase
-       d'autorisation intervient <em>avant</em> cette derni&egrave;re, vous pouvez
-       vous contenter d'utiliser <code>%{REMOTE_USER}</code> dans ce
-       contexte.</p></li>
-
-        <li>
-        <code>%{LA-F:variable}</code> peut &ecirc;tre utilis&eacute;e pour effectuer
-       une sous-requ&ecirc;te interne (bas&eacute;e sur le nom de fichier), afin de
-       d&eacute;terminer la valeur finale de <em>variable</em>. La plupart du
-       temps, elle est identique &agrave; LA-U (voir ci-dessus).</li>
-      </ol>
+       </dd>
+      </dl>
+
+     
+
+      <p><a id="rewritecond-lookahead" name="rewritecond-lookahead"></a><strong>Sous-requ&ecirc;tes de projection vers l&rsquo;avant</strong></p>
 
+      <p>Ces formes g&eacute;n&egrave;rent une sous-requ&ecirc;te interne pour d&eacute;terminer la valeur
+      finale d&rsquo;une variable qui n&rsquo;est pas encore disponible &agrave; ce stade du
+      traitement&nbsp;:</p>
 
-      <p><em>expression_de_comparaison</em> est une expression
+      <dl>
+        <dt><a id="LA-U" name="LA-U"><strong><code>%{LA-U:variable}</code></strong></a></dt>
+       <dd>G&eacute;n&egrave;re une sous-requ&ecirc;te interne (&agrave; base d&rsquo;URL) pour d&eacute;terminer la
+       valeur finale de <em>variable</em>. Ceci permet d'acc&eacute;der &agrave; la valeur
+       d'une variable pour la r&eacute;&eacute;criture inconnue &agrave; ce stade du traitement,
+       mais qui sera d&eacute;finie au cours d'une phase ult&eacute;rieure.  
+       <p>Par exemple, pour effectuer une r&eacute;&eacute;criture d&eacute;pendant de la variable
+       <code>REMOTE_USER</code> dans le contexte du serveur principal (fichier
+       <code>httpd.conf</code>), vous devez utiliser
+       <code>%{LA-U:REMOTE_USER}</code> - cette variable est d&eacute;finie par la
+       phase d'autorisation qui intervient <em>apr&egrave;s</em> la phase de
+       traduction d'URL (pendant laquelle <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
+       op&egrave;re).</p> 
+       <p>Par contre, comme <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> impl&eacute;mente
+       son <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de r&eacute;pertoire</a>
+       (fichier <code>.htaccess</code>) via la phase Fixup de l'API, et comme
+       la phase d'autorisation intervient <em>avant</em> cette derni&egrave;re, vous
+       pouvez vous contenter d'utiliser <code>%{REMOTE_USER}</code> dans ce
+       contexte.</p></dd>
+
+        <dt><strong><code>%{LA-F:variable}</code></strong></dt>
+        <dd>G&eacute;n&egrave;re une sous-requ&ecirc;te interne (&agrave; base de nom de fichier) pour
+       d&eacute;terminer la valeur finale de la <em>variable</em>. Identique la
+       plupart du temps &agrave; LA-U ci-dessus.</dd>
+      </dl>
+
+      
+
+      <p><a id="rewritecond-expr" name="rewritecond-expr"></a><strong>Syntaxe des expressions</strong></p>
+
+      <p>Si la cha&icirc;ne <em>TestString</em> contient la valeur sp&eacute;ciale
+      <code>expr</code>, le motif <em>CondPattern</em> sera trait&eacute; comme une
+      expression <a href="../expr.html">ap_expr</a>. Les en-t&ecirc;tes HTTP
+      r&eacute;f&eacute;renc&eacute;s dans l&rsquo;expression seront ajout&eacute;s &agrave; l&rsquo;en-t&ecirc;te Vary si le drapeau
+      <code>novary</code> n&rsquo;a pas &eacute;t&eacute; sp&eacute;cifi&eacute;.</p>
+
+      
+      
+      
+
+      <p><a id="rewritecond-condpattern" name="rewritecond-condpattern"></a><strong>CondPattern</strong></p>
+
+
+      <p><em>CondPattern</em> est une expression
       rationnelle qui est appliqu&eacute;e &agrave; l'instance actuelle de
-      <em>cha&icirc;ne_de_test</em>. <em>cha&icirc;ne_de_test</em> est d'abord
+      <em>TestString</em>. <em>TestString</em> est d'abord
       &eacute;valu&eacute;e, puis compar&eacute;e &agrave;
-      l'<em>expression_de_comparaison</em>.</p>
+      l'<em>CondPattern</em>.</p>
 
-      <p><em>expression_de_comparaison</em> est en g&eacute;n&eacute;ral une
+      <p><em>CondPattern</em> est en g&eacute;n&eacute;ral une
       <a class="glossarylink" href="../glossary.html#regex" title="voir glossaire">expression rationnelle</a>, mais vous
       disposez des syntaxes suppl&eacute;mentaires suivantes pour effectuer
-      d'autres tests utiles sur <em>cha&icirc;ne_de_test</em> :
+      d'autres tests utiles sur <em>TestString</em> :
       </p>
 
-      <ol>
-        <li>Vous pouvez pr&eacute;fixer l'expression avec un caract&egrave;re
+      
+
+      <p>Vous pouvez pr&eacute;fixer l'expression avec un caract&egrave;re
        '<code>!</code>' (point d'exclamation) pour inverser le r&eacute;sultat
        de la condition, quelle que soit l'<em>expression de
-       comparaison</em> utilis&eacute;e.</li>
+       comparaison</em> utilis&eacute;e.</p>
 
-        <li>Vous pouvez effectuer des comparaisons lexicographiques de
-       cha&icirc;nes   :
+        
 
-         <dl>
+      <p><a id="rewritecond-stringcomp" name="rewritecond-stringcomp"></a><strong>Comparaisons de cha&icirc;nes</strong></p>
+
+      <dl>   
             <dt><strong>&lt;expression</strong></dt>
            <dd>inf&eacute;rieur au sens lexicographique<br>
            Traite l'<em>expression</em> comme une cha&icirc;ne de
            caract&egrave;res et la compare lexicographiquement &agrave;
-           <em>cha&icirc;ne_de_test</em>. La condition est satisfaite si
-           <em>cha&icirc;ne_de_test</em> est inf&eacute;rieure au sens
+           <em>TestString</em>. La condition est satisfaite si
+           <em>TestString</em> est inf&eacute;rieure au sens
            lexicographique &agrave; l'<em>expression</em>.</dd>
 
             <dt><strong>&gt;expression</strong></dt>
            <dd>sup&eacute;rieur au sens lexicographique<br>
            Traite l'<em>expression</em> comme une cha&icirc;ne de
            caract&egrave;res et la compare lexicographiquement &agrave;
-           <em>cha&icirc;ne_de_test</em>. La condition est satisfaite si
-           <em>cha&icirc;ne_de_test</em> est sup&eacute;rieure au sens
+           <em>TestString</em>. La condition est satisfaite si
+           <em>TestString</em> est sup&eacute;rieure au sens
            lexicographique &agrave; l'<em>expression</em>.</dd>
 
             <dt><strong>=expression</strong></dt>
            <dd>&eacute;gal au sens lexicographique<br>
            Traite l'<em>expression</em> comme une cha&icirc;ne de
            caract&egrave;res et la compare lexicographiquement &agrave;
-           <em>cha&icirc;ne_de_test</em>. La condition est satisfaite si
-           <em>cha&icirc;ne_de_test</em> est &eacute;gale au sens
+           <em>TestString</em>. La condition est satisfaite si
+           <em>TestString</em> est &eacute;gale au sens
            lexicographique &agrave; l'<em>expression</em> (les deux cha&icirc;nes
            sont exactement identiques, caract&egrave;re pour caract&egrave;re). Si
            <em>expression</em> est <code>""</code> (deux guillemets),
-           <em>cha&icirc;ne_de_test</em> est compar&eacute;e &agrave; la
+           <em>TestString</em> est compar&eacute;e &agrave; la
            cha&icirc;ne vide.</dd>
 
            <dt><strong>&lt;=expression de comparaison</strong></dt>
            <dd>inf&eacute;rieur ou &eacute;gal &agrave; au sens lexicographique<br>
-            Consid&egrave;re l'<em>expression_de_comparaison</em> comme une
+            Consid&egrave;re la <em>CondPattern</em> comme une
            cha&icirc;ne de caract&egrave;res et la compare au sens lexicographique &agrave;
-           la <em>cha&icirc;ne_de_test</em>. Vrai si <em>cha&icirc;ne_de_test</em>
-           pr&eacute;c&egrave;de lexicographiquement <em>expression_de_comparaison</em>, ou est
-           &eacute;gale &agrave; <em>expression_de_comparaison</em> (les deux cha&icirc;nes
+           la <em>TestString</em>. Vrai si <em>TestString</em>
+           pr&eacute;c&egrave;de lexicographiquement <em>CondPattern</em>, ou est
+           &eacute;gale &agrave; <em>CondPattern</em> (les deux cha&icirc;nes
            sont identiques, caract&egrave;re pour caract&egrave;re).</dd>
 
             <dt><strong>&gt;=expression de comparaison</strong></dt>
            <dd>sup&eacute;rieur ou &eacute;gal &agrave; au sens lexicographique<br>
-            Consid&egrave;re l'<em>expression_de_comparaison</em> comme une
+            Consid&egrave;re la <em>CondPattern</em> comme une
            cha&icirc;ne de caract&egrave;res et la compare au sens lexicographique &agrave;
-           la <em>cha&icirc;ne_de_test</em>. Vrai si <em>cha&icirc;ne_de_test</em>
-           suit lexicographiquement <em>expression_de_comparaison</em>, ou est
-           &eacute;gale &agrave; <em>expression_de_comparaison</em> (les deux cha&icirc;nes
+           la <em>TestString</em>. Vrai si <em>TestString</em>
+           suit lexicographiquement <em>CondPattern</em>, ou est
+           &eacute;gale &agrave; <em>CondPattern</em> (les deux cha&icirc;nes
            sont identiques, caract&egrave;re pour caract&egrave;re).</dd>
-        </dl>
+      </dl>
        <div class="note"><h3>Note</h3>
         L'op&eacute;rateur de comparaison de cha&icirc;nes fait partie des arguments de la
        <em>CondPattern</em> et doit par cons&eacute;quent se trouver entre les
@@ -572,53 +614,53 @@ la r&eacute;&eacute;criture soit effectu&eacute;e
 
         </div>
 
-       </li>
 
-        <li>
-          Vous pouvez effectuer des comparaisons d'entiers :
-          <dl>
+      <p><a id="rewritecond-intcomp" name="rewritecond-intcomp"></a><strong>Comparaisons d&rsquo;entiers</strong></p>
+
+      <dl>
 
             <dt><strong>-eq</strong></dt>
            <dd>est num&eacute;riquement &eacute;gal &agrave;<br>
-            La <em>cha&icirc;ne_de_test</em> est consid&eacute;r&eacute;e comme un entier,
+            <em>TestString</em> est consid&eacute;r&eacute;e comme un entier,
            et est compar&eacute;e num&eacute;riquement &agrave; l'<em>expression de
            comparaison</em>. Vrai si les deux expressions sont
            num&eacute;riquement &eacute;gales.</dd>
 
             <dt><strong>-ge</strong></dt>
            <dd>est num&eacute;riquement sup&eacute;rieur ou &eacute;gal &agrave;<br>
-            La <em>cha&icirc;ne_de_test</em> est consid&eacute;r&eacute;e comme un entier,
+            <em>TestString</em> est consid&eacute;r&eacute;e comme un entier,
            et est compar&eacute;e num&eacute;riquement &agrave; l'<em>expression de
-           comparaison</em>. Vrai si <em>cha&icirc;ne_de_test</em> est
+           comparaison</em>. Vrai si <em>TestString</em> est
            num&eacute;riquement sup&eacute;rieure ou &eacute;gale &agrave;
-           <em>expression_de_comparaison</em>.</dd>
+           <em>CondPattern</em>.</dd>
 
              <dt><strong>-gt</strong></dt>
             <dd>est num&eacute;riquement sup&eacute;rieur &agrave;<br>
-            La <em>cha&icirc;ne_de_test</em> est consid&eacute;r&eacute;e comme un entier,
+             <em>TestString</em> est consid&eacute;r&eacute;e comme un entier,
            et est compar&eacute;e num&eacute;riquement &agrave; l'<em>expression de
-           comparaison</em>. Vrai si <em>cha&icirc;ne_de_test</em> est
+           comparaison</em>. Vrai si <em>TestString</em> est
            num&eacute;riquement
-           sup&eacute;rieure &agrave; <em>expression_de_comparaison</em>.</dd>
+           sup&eacute;rieure &agrave; <em>CondPattern</em>.</dd>
 
             <dt><strong>-le</strong></dt>
            <dd>est num&eacute;riquement inf&eacute;rieur ou &eacute;gal &agrave;<br>
-            La <em>cha&icirc;ne_de_test</em> est consid&eacute;r&eacute;e comme un entier,
+            <em>TestString</em> est consid&eacute;r&eacute;e comme un entier,
            et est compar&eacute;e num&eacute;riquement &agrave; l'<em>expression de
-           comparaison</em>. Vrai si <em>cha&icirc;ne_de_test</em> est
+           comparaison</em>. Vrai si <em>TestString</em> est
            num&eacute;riquement
-           inf&eacute;rieure ou &eacute;gale &agrave; <em>expression_de_comparaison</em>.
+           inf&eacute;rieure ou &eacute;gale &agrave; <em>CondPattern</em>.
            Attention &agrave; la confusion avec le drapeau <strong>-l</strong>
            en utilisant la variante the <strong>-L</strong> ou
            <strong>-h</strong>.</dd>
 
              <dt><strong>-lt</strong></dt>
             <dd>est num&eacute;riquement inf&eacute;rieur &agrave;<br>
-            La <em>cha&icirc;ne_de_test</em> est consid&eacute;r&eacute;e comme un entier,
+            <em>TestString</em> est consid&eacute;r&eacute;e comme un entier,
            et est compar&eacute;e num&eacute;riquement &agrave; l'<em>expression de
-           comparaison</em>. Vrai si <em>cha&icirc;ne_de_test</em> est
+           comparaison</em>. Vrai si <em>TestString</em> est
            num&eacute;riquement
-           inf&eacute;rieure &agrave; <em>expression_de_comparaison</em>.
+           inf&eacute;rieure &agrave; <em>CondPattern</em>.
            Attention &agrave; la confusion avec le drapeau <strong>-l</strong>
            en utilisant la variante the <strong>-L</strong> ou
            <strong>-h</strong>.</dd>
@@ -630,39 +672,42 @@ la r&eacute;&eacute;criture soit effectu&eacute;e
             si les deux &eacute;l&eacute;ments compar&eacute;s sont num&eacute;riquement diff&eacute;rents.
             Equivalent &agrave; <code>!-eq</code>.</dd>            
 
-           </dl>
-        </li>
-
-        <li>Vous pouvez effectuer diff&eacute;rents tests sur les attributs de
-       fichier :
-          <dl>
+      </dl>
+        
+      
 
+      <p><a id="rewritecond-fileattr" name="rewritecond-fileattr"></a><strong>Tests des attributs de fichier</strong></p>
+      <dl>
             <dt><strong>-d</strong></dt>
            <dd>est un <strong>r</strong>&eacute;pertoire<br>
-           Traite <em>cha&icirc;ne_de_test</em> comme un chemin et v&eacute;rifie
+           Traite <em>TestString</em> comme un chemin et v&eacute;rifie
            s'il existe ou pas, et s'il s'agit d'un r&eacute;pertoire.</dd>
 
             <dt><strong>-f</strong></dt>
            <dd>est un <strong>f</strong>ichier r&eacute;gulier<br>
-           Traite <em>cha&icirc;ne_de_test</em> comme un chemin et v&eacute;rifie
-           s'il existe ou pas, et s'il s'agit d'un fichier r&eacute;gulier.</dd>
+           Traite <em>TestString</em> comme un chemin et v&eacute;rifie
+           s'il existe ou pas, et s'il s'agit d'un fichier r&eacute;gulier.
+           </dd>
 
             <dt><strong>-F</strong></dt>
            <dd>test de l'existence d'un fichier via une sous-requ&ecirc;te<br>
-           V&eacute;rifie si <em>cha&icirc;ne_de_test</em> est un fichier valide,
+           V&eacute;rifie si <em>TestString</em> est un fichier valide,
            accessible &agrave; travers tous les contr&ocirc;les d'acc&egrave;s du serveur
            actuellement configur&eacute;s pour ce chemin. C'est une
            sous-requ&ecirc;te interne qui effectue cette v&eacute;rification - &agrave;
            utiliser avec pr&eacute;cautions car les performances du serveur
-           peuvent s'en trouver affect&eacute;es !</dd>
+           peuvent s'en trouver affect&eacute;es !
+           </dd>
 
            <dt><strong>-h</strong></dt>
            <dd>est un lien symbolique, selon la convention bash<br>
-            Voir <strong>-l</strong>.</dd>
+            Voir <strong>-l</strong>.
+           </dd>
 
             <dt><strong>-l</strong></dt>
            <dd>est un <strong>l</strong>ien symbolique<br>
-            Consid&egrave;re la <em>cha&icirc;ne_de_test</em> comme un chemin et
+            Consid&egrave;re la <em>TestString</em> comme un chemin et
            v&eacute;rifie son existence et si elle est un lien symbolique. On
            peut aussi utiliser la convention bash <strong>-L</strong>
            ou <strong>-h</strong> lorsqu'il y a risque de confusion
@@ -674,14 +719,14 @@ la r&eacute;&eacute;criture soit effectu&eacute;e
 
             <dt><strong>-s</strong></dt>
            <dd>est un fichier r&eacute;gulier d'une certaine taille<br>
-            Consid&egrave;re la <em>cha&icirc;ne_de_test</em> comme un chemin et
+            Consid&egrave;re la <em>TestString</em> comme un chemin et
            v&eacute;rifie son existence et si elle est un fichier r&eacute;gulier
            d'une taille sup&eacute;rieure &agrave; z&eacute;ro.</dd>
 
             <dt><strong>-U</strong></dt>
            <dd><p>test de l'existence d'une
            URL via une sous-requ&ecirc;te<br>
-           V&eacute;rifie si <em>cha&icirc;ne_de_test</em> est une URL valide,
+           V&eacute;rifie si <em>TestString</em> est une URL valide,
            accessible &agrave; travers tous les contr&ocirc;les d'acc&egrave;s du serveur
            actuellement configur&eacute;s pour ce chemin. C'est une
            sous-requ&ecirc;te interne qui effectue cette v&eacute;rification - &agrave;
@@ -696,23 +741,24 @@ la r&eacute;&eacute;criture soit effectu&eacute;e
 
          <dt><strong>-x</strong></dt>
          <dd>a l'attribut d'ex&eacute;cution positionn&eacute;<br>
-            Consid&egrave;re la <em>cha&icirc;ne_de_test</em> comme un chemin et
+            Consid&egrave;re la <em>TestString</em> comme un chemin et
            v&eacute;rifie son existence et si elle a son attribut d'ex&eacute;cution
            positionn&eacute;. Ce positionnement est d&eacute;termin&eacute; en fonction de
            l'OS sous-jacent.</dd>
 
-           </dl>
+      </dl>
 
-           Par exemple:
+           <p>Par exemple&nbsp;:</p>
 
         <pre class="prettyprint lang-config">RewriteCond /var/www/%{REQUEST_URI} !-f
 RewriteRule ^(.+) /other/archive/$1 [R]</pre>
 
 
-        </li>
+      
+
+      <p><a id="rewritecond-expr-pattern" name="rewritecond-expr-pattern"></a><strong>&Eacute;valuation des expressions</strong></p>
 
-       <li>
-           <p>Si la <em>cha&icirc;ne_de_test</em> contient la valeur sp&eacute;ciale
+           <p>Si <em>TestString</em> contient la valeur sp&eacute;ciale
           <code>expr</code>, la <em>cha&icirc;ne de comparaison</em> sera
           trait&eacute;e en tant qu'expression rationnelle de type <a href="../expr.html">ap_expr</a>.</p>
 
@@ -726,31 +772,34 @@ RewriteRule ^(.+) /other/archive/$1 [R]</pre>
            <pre class="prettyprint lang-config">           RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'"
            RewriteRule "^/images" "-" [F]</pre>
 
-        </li>
-    </ol>
 
+      
+      
+      
+
+      <p><a id="rewritecond-flags" name="rewritecond-flags"></a><strong>Drapeaux</strong></p>
        <p>Vous pouvez aussi d&eacute;finir certains drapeaux pour
-       l'<em>expression_de_comparaison</em> en ajoutant ces
-       <strong><code>[</code><em>drapeaux</em><code>]</code></strong>
+       la <em>CondPattern</em> en ajoutant ces
+       <strong><code>[</code><em>flags</em><code>]</code></strong>
        comme troisi&egrave;me argument de la directive
-       <code class="directive">RewriteCond</code>, o&ugrave; <em>drapeaux</em> est un
+       <code class="directive">RewriteCond</code>, o&ugrave; <em>flags</em> est un
        sous-ensemble s&eacute;par&eacute; par des virgules des drapeaux suivants :</p>
 
-      <ul>
-        <li>'<strong><code>nocase|NC</code></strong>'
-       (<strong>n</strong>o <strong>c</strong>ase)<br>
+     <dl>
+        <dt>'<strong><code>nocase|NC</code></strong>'</dt>
+        <dd>(<strong>n</strong>o <strong>c</strong>ase)<br>
        Rend le test insensible &agrave; la casse - il n'est pas fait de
        distinction entre majuscules et minuscules, &agrave; la fois dans le
-       d&eacute;veloppement de <em>cha&icirc;ne_de_test</em> et dans
-       <em>expression_de_comparaison</em>. Ce drapeau n'est pris en
-       compte que lors d'une comparaison entre <em>cha&icirc;ne_de_test</em>
-       et <em>expression_de_comparaison</em>. Il ne l'est pas pour les
+       d&eacute;veloppement de <em>TestString</em> et dans
+       <em>CondPattern</em>. Ce drapeau n'est pris en
+       compte que lors d'une comparaison entre <em>TestString</em>
+       et <em>CondPattern</em>. Il ne l'est pas pour les
        v&eacute;rification par sous-requ&ecirc;tes ou sur le syst&egrave;me de
-       fichiers.</li>
+       fichiers.
+       </dd>
 
-        <li>
-          '<strong><code>ornext|OR</code></strong>'
-         (<strong>ou</strong> condition suivante)<br>
+        <dt>'<strong><code>ornext|OR</code></strong>'</dt>
+        <dd>(<strong>or</strong> condition suivante)<br>
          Permet de cha&icirc;ner les conditions de r&egrave;gles avec un OU au
          lieu du AND implicite. Exemple typique :
 
@@ -762,10 +811,10 @@ RewriteRule ...r&egrave;gles concernant tous ces h&ocirc;tes...</pre>
 
           Sans ce drapeau, les paires
          condition/r&egrave;gle devraient &ecirc;tre &eacute;crites trois fois.
-        </li>
+        </dd>
 
-        <li>'<strong><code>novary|NV</code></strong>'
-       (<strong>n</strong>o <strong>v</strong>ary)<br>
+        <dt>'<strong><code>novary|NV</code></strong>'</dt>
+        <dd>(<strong>n</strong>o <strong>v</strong>ary)<br>
        Si la condition contient un en-t&ecirc;te HTTP, ce drapeau emp&ecirc;che
        ce dernier d'&ecirc;tre ajout&eacute; &agrave; l'en-t&ecirc;te Vary de la r&eacute;ponse. <br>
        L'utilisation de ce drapeau peut provoquer une mise en cache
@@ -773,11 +822,14 @@ RewriteRule ...r&egrave;gles concernant tous ces h&ocirc;tes...</pre>
        varie avec la valeur de l'en-t&ecirc;te consid&eacute;r&eacute;. Ce drapeau ne
        devrait donc &ecirc;tre utilis&eacute; que si l'on ma&icirc;trise parfaitement le
        fonctionnement de l'en-t&ecirc;te Vary.
-        </li>
-      </ul>
+        </dd>
+      </dl>
+      
+      
+      
       
 
-      <p><strong>Exemple :</strong></p>
+      <p><a id="rewritecond-examples" name="rewritecond-examples"></a><strong>Exemple</strong></p>
 
        <p>Pour r&eacute;&eacute;crire la page d'accueil d'un site en fonction de
        l'en-t&ecirc;te ``<code>User-Agent:</code>'' de la requ&ecirc;te, vous
@@ -1135,7 +1187,7 @@ pour le moteur de r&eacute;&eacute;criture</td></tr>
 <table class="directive">
 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>D&eacute;finit les r&egrave;gles pour le moteur de r&eacute;&eacute;criture</td></tr>
 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteRule
-      <em>Mod&egrave;le</em> <em>Substitution</em> [<em>drapeaux</em>]</code></td></tr>
+      [!]<em>Pattern</em> <em>Substitution</em> [<em>flags</em>]</code></td></tr>
 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, r&eacute;pertoire, .htaccess</td></tr>
 <tr><th><a href="directive-dict.html#Override">Surcharges autoris&eacute;es:</a></th><td>FileInfo</td></tr>
 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
@@ -1149,11 +1201,14 @@ pour le moteur de r&eacute;&eacute;criture</td></tr>
       les r&egrave;gles seront appliqu&eacute;es au cours du processus de
       r&eacute;&eacute;criture.</p>
 
-      <p><a id="patterns" name="patterns"><em>Mod&egrave;le</em></a> est une <a id="regexp" name="regexp"><a class="glossarylink" href="../glossary.html#regex" title="voir glossaire">expression
+      <p><a id="patterns" name="patterns"><em>Pattern</em></a> est une <a id="regexp" name="regexp"><a class="glossarylink" href="../glossary.html#regex" title="voir glossaire">expression
       rationnelle</a></a>. Ce avec quoi ce mod&egrave;le est compar&eacute; d&eacute;pend de
       l'endroit o&ugrave; la directive <code class="directive">RewriteRule</code> est
       d&eacute;finie.</p>
 
+      <p>Si le motif est pr&eacute;c&eacute;d&eacute; d&rsquo;un <code>!</code>, la substitution ne sera
+      effectu&eacute;e que si le <em>pattern</em> ne correspond pas.</p>
+
 <div class="note"><h3><a id="what_is_matched" name="what_is_matched">Qu'est-ce qui est compar&eacute; ?</a></h3>
 
 <ul>
@@ -1164,17 +1219,17 @@ pour le moteur de r&eacute;&eacute;criture</td></tr>
 
       <li><p>Dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de
       r&eacute;pertoire</a> (sections <code class="directive"><a href="../mod/core.html#directory">Directory</a></code> et fichiers .htaccess), le
-      <em>Mod&egrave;le</em> est compar&eacute; avec une partie de chemin ; par exemple une
+      <em>Pattern</em> est compar&eacute; avec une partie de chemin ; par exemple une
       requ&ecirc;te pour "/app1/index.html" entra&icirc;nera une comparaison avec
       "app1/index.html" ou "index.html" selon le chemin de r&eacute;pertoire o&ugrave; la
       directive <code class="directive">RewriteRule</code> est d&eacute;finie.</p>
 
-      <p>Le chemin de r&eacute;pertoire auquel la r&egrave;gle s'applique est supprim&eacute; du
+      <p>Le chemin de r&eacute;pertoire auquel la r&egrave;gle s&rsquo;applique est supprim&eacute; du
       chemin correspondant du syst&egrave;me de fichiers avant comparaison (jusqu'au
       slash final compris).  En cons&eacute;quence de cette suppression, les r&egrave;gles
       d&eacute;finies dans ce contexte n'effectuent des comparaisons qu'avec la portion
       du chemin du syst&egrave;me de fichiers "en dessous" du chemin de r&eacute;pertoire
-      auquel la r&egrave;gle s'applique.</p>
+      auquel la r&egrave;gle s&rsquo;applique.</p>
 
       <p>Le chemin correspondant actuel du syst&egrave;me de fichiers est d&eacute;termin&eacute; par
       des directives telles que <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> et
@@ -1257,34 +1312,15 @@ derni&egrave;re.</li>
 </div>
 </div>
 
-       <p>Pour quelques conseils &agrave; propos des <a class="glossarylink" href="../glossary.html#regex" title="voir glossaire">expressions rationnelles</a>, voir le
-       document <a href="../rewrite/intro.html#regex">Introduction &agrave;
-       mod_rewrite</a>.</p>
-
-      <p>Dans <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, on peut aussi utiliser le caract&egrave;re
-      NOT ('<code>!</code>') comme pr&eacute;fixe de mod&egrave;le. Ceci vous permet
-      d'inverser la signification d'un mod&egrave;le, soit pour dire
-      ``<em>si l'URL consid&eacute;r&eacute;e ne correspond <strong>PAS</strong> &agrave;
-      ce mod&egrave;le</em>''. Le caract&egrave;re NON peut donc &ecirc;tre utilis&eacute; &agrave;
-      titre exceptionnel, lorsqu'il est plus simple d'effectuer une
-      comparaison avec le mod&egrave;le invers&eacute;, ou dans la derni&egrave;re r&egrave;gle
-      par d&eacute;faut.</p>
-
-<div class="note"><h3>Note</h3>
-Si vous utilisez le caract&egrave;re NON pour inverser la signification d'un
-mod&egrave;le, vous ne pouvez pas inclure de parties g&eacute;n&eacute;riques group&eacute;es dans
-le mod&egrave;le. Ceci est d&ucirc; au fait que, lorsque le mod&egrave;le ne correspond
-pas (autrement dit, sa n&eacute;gation correspond), les groupes sont vides.
-Ainsi, si vous utilisez des mod&egrave;les invers&eacute;s, vous ne pouvez
-pas vous r&eacute;f&eacute;rer aux groupes par <code>$N</code> dans la cha&icirc;ne de
-substitution !
-</div>
+      <p>Pour des informations &agrave; propos des <a class="glossarylink" href="../glossary.html#regex" title="voir glossaire">expressions
+      rationnelles</a>, y compris l&rsquo;utilisation du pr&eacute;fixe <code>!</code>
+      pour inverser un motif, voir la section <a href="../rewrite/intro.html#regex">Expressions rationnelles</a> de
+      l&rsquo;introduction &agrave; mod_rewrite.</p>
 
-      <p>Dans une r&egrave;gle de r&eacute;&eacute;criture,
-      <a id="rhs" name="rhs"><em>Substitution</em></a> est la cha&icirc;ne
-      de caract&egrave;res qui remplace le chemin de l'URL original qui
-      correspondait au <em>Mod&egrave;le</em>. <em>Substitution</em> peut
-      &ecirc;tre :</p>
+      <p>Dans une r&egrave;gle de r&eacute;&eacute;criture, <a id="rhs" name="rhs"><em>Substitution</em></a> est la cha&icirc;ne de caract&egrave;res qui
+      remplace le chemin de l'URL (voir <a href="#what_is_matched">"Qu&rsquo;est-ce
+      qui est compar&eacute;&nbsp;?"</a> ci-avant) lorsque les conditions de la r&egrave;gle sont
+      satisfaites. <em>Substitution</em> peut &ecirc;tre :</p>
 
       <dl>
 
@@ -1292,7 +1328,7 @@ substitution !
 
        <dd>Il indique alors la localisation dans le syst&egrave;me de fichiers de la
        ressource qui doit &ecirc;tre envoy&eacute;e au client. Une substitution commen&ccedil;ant
-       par <code>/</code> n'est trait&eacute;e comme un chemin du syst&egrave;me de fichiers
+       par <code>/</code> n&rsquo;est trait&eacute;e comme un chemin du syst&egrave;me de fichiers
        que dans un contexte de serveur virtuel ou de serveur global, et
        seulement si le premier composant du chemin existe dans le syst&egrave;me de
        fichiers. Dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de
@@ -1304,7 +1340,7 @@ substitution !
        doit &ecirc;tre servie. Dans un contexte de serveur virtuel ou de serveur
        global, si le premier composant du chemin existe &agrave; la racine du syst&egrave;me
        de fichiers, la substitution est trait&eacute;e comme un chemin du syst&egrave;me de
-       fichiers. Par exemple, <code>/www/file.html</code> est un chemin d'URL,
+       fichiers. Par exemple, <code>/www/file.html</code> est un chemin d&rsquo;URL,
        sauf si un r&eacute;pertoire nomm&eacute; <code>www</code> existe &agrave; la racine du
        syst&egrave;me de fichiers. Si vous d&eacute;sirez que d'autres directives de
        correspondance d'URL (comme la directive <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>) soient appliqu&eacute;es au
@@ -1337,23 +1373,23 @@ substitution !
       <div class="note"><h3>Comment sont interpr&eacute;t&eacute;es les substitutions de chemin</h3>
       <p>En fonction du contexte et si elle commence ou non par un slash, une
       substitution sera trait&eacute;e comme un chemin du syst&egrave;me de fichiers ou comme
-      un chemin d'URL&nbsp;:</p>
+      un chemin d&rsquo;URL&nbsp;:</p>
       <ul>
         <li><strong>Commence par un <code>/</code>, contexte de serveur virtuel
        ou de serveur global&nbsp;:</strong>
         Trait&eacute;e comme un chemin du syst&egrave;me de fichiers si le premier composant du
-       chemin existe sur disque&nbsp;; sinon, trait&eacute;e comme un chemin d'URL.</li>
+       chemin existe sur disque&nbsp;; sinon, trait&eacute;e comme un chemin d&rsquo;URL.</li>
         <li><strong>Commence par un <code>/</code>, <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de r&eacute;pertoire</a>&nbsp;:</strong>
-        Toujours trait&eacute;e comme un chemin d'URL. Pas de v&eacute;rification sur le
+        Toujours trait&eacute;e comme un chemin d&rsquo;URL. Pas de v&eacute;rification sur le
        syst&egrave;me de fichiers.</li>
         <li><strong>Ne commence pas par un <code>/</code> (chemin relatif), contexte de serveur virtuel
-       ou de serveur global&nbsp;:</strong> Trait&eacute;e comme un chemin d'URL relatif &agrave;
-       l'URI de la requ&ecirc;te actuelle.</li>
+       ou de serveur global&nbsp;:</strong> Trait&eacute;e comme un chemin d&rsquo;URL relatif &agrave;
+       l&rsquo;URI de la requ&ecirc;te actuelle.</li>
        <li><strong>Ne commence pas par un <code>/</code> (chemin relatif),
        <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de
-       r&eacute;pertoire</a>&nbsp;:</strong> Trait&eacute;e comme un chemin d'URL relatif
+       r&eacute;pertoire</a>&nbsp;:</strong> Trait&eacute;e comme un chemin d&rsquo;URL relatif
        au chemin de r&eacute;pertoire auquel la directive <code class="directive"><a href="../mod/core.html#directory">Directory</a></code> ou le fichier <code>.htaccess</code>
-       s'appliquent. Voir <code class="directive">RewriteBase</code> pour le contr&ocirc;le
+       s&rsquo;appliquent. Voir <code class="directive">RewriteBase</code> pour le contr&ocirc;le
        du pr&eacute;fixe ajout&eacute; aux substitutions relatives.</li>
       </ul>
       </div>
@@ -1372,7 +1408,7 @@ substitution !
        condition d'une r&egrave;gle (<code>%{VARNAME}</code>)</li>
 
         <li>des appels de
-       <a href="#mapfunc">fonctions de comparaison</a>
+       <a href="#mapfunc">fonctions de mappage</a>
        (<code>${nom correspondance:cl&eacute;|d&eacute;faut}</code>)</li>
       </ol>
 
@@ -1421,10 +1457,10 @@ substitution !
 
       <p>En outre, vous pouvez sp&eacute;cifier des <a name="rewriteflags" id="rewriteflags">actions</a> sp&eacute;ciales &agrave; effectuer en ajoutant
       des
-      <strong><code>[</code><em>drapeaux</em><code>]</code></strong>
+      <strong><code>[</code><em>flags</em><code>]</code></strong>
       comme troisi&egrave;me argument de la directive
       <code class="directive">RewriteRule</code>. S&eacute;par&eacute;s par des virgules au sein d'une
-      liste encadr&eacute;e par des crochets, les <em>drapeaux</em> peuvent
+      liste encadr&eacute;e par des crochets, les <em>flags</em> peuvent
       &ecirc;tre choisis dans la table suivante. Vous trouverez plus de
       d&eacute;tails, et des exemples pour chaque drapeau dans le <a href="../rewrite/flags.html">document &agrave; propos des drapeaux de
       r&eacute;&eacute;criture.</a></p>
@@ -1582,7 +1618,7 @@ substitution !
     </tr>
 <tr class="odd">
         <td>UnsafeAllow3F</td>
-        <td>Autorise les substitutions &agrave; partir d'URL potentiellement non
+        <td>Autorise les substitutions &agrave; partir d&rsquo;URL potentiellement non
        fiables.
         <em><a href="../rewrite/flags.html#flag_unsafe_allow_3f">d&eacute;tails ...</a></em>
         </td>
@@ -1590,7 +1626,7 @@ substitution !
 <tr>
         <td>UnsafePrefixStat</td>
         <td>Autorise les substitutions potentiellement non fiables &agrave; partir
-       d'une variable de t&ecirc;te ou d'une r&eacute;f&eacute;rence arri&egrave;re vers un chemin du
+       d&rsquo;une variable de t&ecirc;te ou d&rsquo;une r&eacute;f&eacute;rence arri&egrave;re vers un chemin du
        syst&egrave;me de fichiers.
         <em><a href="../rewrite/flags.html#flag_unsafe_prefix_stat">d&eacute;tails ...</a></em><br>
         Disponible &agrave; partir de la version 2.5.1 du serveur HTTP Apache.
index 0be21e86f4d3e241aa6b35fcdd36de7efe6541b7..decc0a7b1e85192770cea6f795335aaa7841b0f0 100644 (file)
@@ -8,6 +8,6 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
   </variants>
 </metafile>
index dd7ccbdcd2d76ceba0483da931ceec004101331f..4b651ddf2771c437b346475112efb4b6f1972d18 100644 (file)
@@ -31,8 +31,6 @@
 <a href="../ja/mod/mod_unique_id.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
 <a href="../ko/mod/mod_unique_id.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
 </div>
-<div class="outofdate">Cette traduction peut &ecirc;tre p&eacute;rim&eacute;e. V&eacute;rifiez la version
-            anglaise pour les changements r&eacute;cents.</div>
 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Fournit une variable d'environnement contenant un
 identifiant unique pour chaque requ&ecirc;te</td></tr>
 <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
@@ -88,27 +86,30 @@ identifiant unique pour chaque requ&ecirc;te</td></tr>
       <li>Les temps des machines sont synchronis&eacute;s via NTP ou tout autre
       protocole de synchronisation du temps en r&eacute;seau.</li>
 
-      <li>Les nom d'h&ocirc;tes des machines sont tous diff&eacute;rents, de fa&ccedil;on &agrave;
-      ce que le module puisse recevoir une adresse IP diff&eacute;rente pour
-      chaque machine du cluster en effectuant une recherche sur le nom
-      d'h&ocirc;te.</li>
     </ul>
 
+    <div class="note"><h3>Changements &agrave; partir de la version 2.4.29</h3>
+    <p>Dans les versions pr&eacute;c&eacute;dentes, l&rsquo;unicit&eacute; n&eacute;cessitait aussi que chaque
+    machine ait une adresse IP distincte. Depuis la version 2.4.29, le module
+    utilise un g&eacute;n&eacute;rateur de nombres pseudo-al&eacute;atoires cryptographique (PRNG)
+    ensemenc&eacute; au d&eacute;marrage, tout en supprimant l&rsquo;adresse IP et le PID de
+    l&rsquo;identifiant et en ne n&eacute;cessitant plus de noms d&rsquo;h&ocirc;te distincts ou de
+    d&eacute;lai au d&eacute;marrage.</p></div>
+
     <p>Au vu des caract&eacute;ristiques actuelles du syst&egrave;me d'exploitation,
     nous supposerons que les pids (identifiants processus) sont cod&eacute;s
     sur 32 bits. Si le syst&egrave;me d'exploitation utilise plus de 32 bits
     pour un pid, la correction est triviale mais doit &ecirc;tre effectu&eacute;e
     dans le code.</p>
 
-    <p>Ces hypoth&egrave;ses pos&eacute;es, &agrave; un instant donn&eacute;, nous pouvons
-    distinguer tout processus httpd sur toute machine du cluster de tous
-    les autres processus httpd. Pour ce faire, il suffit d'utiliser
-    l'adresse IP de la machine et le pid du processus httpd. Un
-    processus httpd peut traiter plusieurs requ&ecirc;tes simultan&eacute;ment si
-    vous utilisez un module MPM multi-thread&eacute;. Pour identifier les
-    threads, Apache httpd utilise en interne un index de threads. Ainsi,
-    afin de g&eacute;n&eacute;rer des identifiants uniques pour chaque requ&ecirc;te, il
-    suffit d'effectuer une distinction en fonction du temps.</p>
+    <p>Ces hypoth&egrave;ses pos&eacute;es, &agrave; un instant donn&eacute;, nous pouvons distinguer tout
+    processus httpd sur toute machine du cluster de tous les autres processus
+    httpd. La valeur racine g&eacute;n&eacute;r&eacute;e par PRNG et l&rsquo;index des threads permettent
+    d&rsquo;accomplir cette t&acirc;che. Un processus httpd peut traiter plusieurs requ&ecirc;tes
+    simultan&eacute;ment si vous utilisez un module MPM multi-thread&eacute;. Pour identifier
+    les threads, Apache httpd utilise en interne un index de threads. Ainsi,
+    afin de g&eacute;n&eacute;rer des identifiants uniques pour chaque requ&ecirc;te, il suffit
+    d'effectuer une distinction en fonction du temps.</p>
 
     <p>Pour d&eacute;terminer le temps, nous utiliserons un rep&egrave;re de temps
     Unix (les secondes &eacute;coul&eacute;es depuis le 1er janvier 1970 UTC), et un
@@ -190,21 +191,21 @@ identifiant unique pour chaque requ&ecirc;te</td></tr>
     red&eacute;marrage.</p>
 
     
-    <p>La variable d'environnement <code>UNIQUE_ID</code> est construite
-    par codage du quadruplet de 144 bits (adresse IP sur 32 bits, pid
-    sur 32 bits, rep&egrave;re de temps sur 32 bits, compteur 16 bits et index
-    de threads sur 32 bits) en
+    <p>Depuis la version 2.4.29, la variable d'environnement <code>UNIQUE_ID</code> est construite
+    par codage d&rsquo;une valeur de 160&nbsp;bits (32&nbsp;bits pour l&rsquo;horodatage, 80&nbsp;bits pour
+    la racine PRNG, 16&nbsp;bits pour le compteur et 32&nbsp;bits pour l&rsquo;index des
+    threads)) en
     utilisant l'alphabet <code>[A-Za-z0-9_-]</code> d'une mani&egrave;re
     similaire &agrave; celle du codage MIME base64, et sa valeur se pr&eacute;sente
-    sous la forme d'une cha&icirc;ne de 24 caract&egrave;res. L'alphabet MIME base64
+    sous la forme d'une cha&icirc;ne de 27 caract&egrave;res. L'alphabet MIME base64
     est en fait <code>[A-Za-z0-9+/]</code> ; cependant, les caract&egrave;res
     <code>+</code> et <code>/</code> n&eacute;cessitent un codage particulier
     dans les URLs, ce qui rend leur utilisation peu commode. Toutes les
     valeurs sont cod&eacute;es dans l'ordre des octets d'une adresse r&eacute;seau de
     fa&ccedil;on &agrave; ce
     que le codage soit comparable entre des architectures o&ugrave; l'ordre des
-    octets est diff&eacute;rent. L'ordre r&eacute;el de codage est : rep&egrave;re de temps,
-    adresse IP, pid, compteur. Cet ordre de codage poss&egrave;de un but
+    octets est diff&eacute;rent. L'ordre r&eacute;el de codage est : horodatage, racine,
+    compteur, index des threads. Cet ordre de codage poss&egrave;de un but
     pr&eacute;cis, mais il faut souligner que les applications n'ont aucun
     int&eacute;r&ecirc;t &agrave; entrer dans les d&eacute;tails de ce codage. Les applications
     doivent se contenter de traiter la variable <code>UNIQUE_ID</code>
@@ -232,12 +233,7 @@ identifiant unique pour chaque requ&ecirc;te</td></tr>
     machines du cluster (seule la synchronisation NTP est requise, ce
     qui repr&eacute;sente une charge tr&egrave;s faible), et aucune communication
     entre les processus httpd n'est n&eacute;cessaire (la communication est
-    implicite et incluse dans le pid assign&eacute; par le noyau). Dans des
-    situations tr&egrave;s sp&eacute;cifiques, l'identifiant peut &ecirc;tre raccourci, mais
-    dans ce cas, d'avantage d'informations doivent &ecirc;tre admises (par
-    exemple, les 32 bits de l'adresse IP sont excessifs pour la plupart
-    des sites, mais il n'existe pas de valeur de remplacement portable
-    plus courte).</p>
+    implicite dans la graine PRNG assign&eacute;e au d&eacute;marrage)..</p>
 </div>
 </div>
 <div class="bottomlang">
index 433c4753bb60faeb79f3c5194de7dddc4d86b822..c5e950d875b967669b611eb0a0f4eaf33a6fdf36 100644 (file)
@@ -8,7 +8,7 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
     <variant outdated="yes">ja</variant>
     <variant outdated="yes">ko</variant>
   </variants>
index f5c289ba5faaa7bf6fda78a7ce9d66f4505d8ac1..b719241676aeff1ba314718aa168d6d41f432159 100644 (file)
@@ -1350,7 +1350,7 @@ pas.</td></tr>
 <tr><td><a href="mod_rewrite.html#rewritebase">RewriteBase <em>chemin_URL</em></a></td><td></td><td>dh</td><td>E</td></tr><tr><td class="descr" colspan="4">D&eacute;finit l'URL de base pour les r&eacute;&eacute;critures au niveau
 r&eacute;pertoire</td></tr>
 <tr class="odd"><td><a href="mod_rewrite.html#rewritecond"> RewriteCond
-      <em>cha&icirc;ne_de_test</em> <em>expression_de_comparaison</em> [<em>drapeaux</em>]</a></td><td></td><td>svdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">D&eacute;finit une condition qui devra &ecirc;tre satisfaite pour que
+      <em>TestString</em> [!]<em>CondPattern</em> [<em>flags</em>]</a></td><td></td><td>svdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">D&eacute;finit une condition qui devra &ecirc;tre satisfaite pour que
 la r&eacute;&eacute;criture soit effectu&eacute;e
 </td></tr>
 <tr><td><a href="mod_rewrite.html#rewriteengine">RewriteEngine on|off</a></td><td> off </td><td>svdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Active ou d&eacute;sactive l'ex&eacute;cution du
@@ -1361,7 +1361,7 @@ recherche de mots-cl&eacute;s</td></tr>
 <tr><td><a href="mod_rewrite.html#rewriteoptions">RewriteOptions <var>Options</var></a></td><td></td><td>svdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Configure certaines options sp&eacute;ciales
 pour le moteur de r&eacute;&eacute;criture</td></tr>
 <tr class="odd"><td><a href="mod_rewrite.html#rewriterule">RewriteRule
-      <em>Mod&egrave;le</em> <em>Substitution</em> [<em>drapeaux</em>]</a></td><td></td><td>svdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">D&eacute;finit les r&egrave;gles pour le moteur de r&eacute;&eacute;criture</td></tr>
+      [!]<em>Pattern</em> <em>Substitution</em> [<em>flags</em>]</a></td><td></td><td>svdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">D&eacute;finit les r&egrave;gles pour le moteur de r&eacute;&eacute;criture</td></tr>
 <tr><td><a href="core.html#rlimitcpu">RLimitCPU <var>secondes</var>|max [<var>secondes</var>|max]</a></td><td></td><td>svdh</td><td>C</td></tr><tr><td class="descr" colspan="4">Limite le temps CPU allou&eacute; aux processus initi&eacute;s par les
 processus enfants d'Apache httpd</td></tr>
 <tr class="odd"><td><a href="core.html#rlimitmem">RLimitMEM <var>octets</var>|max [<var>octets</var>|max]</a></td><td></td><td>svdh</td><td>C</td></tr><tr class="odd"><td class="descr" colspan="4">Limite la m&eacute;moire allou&eacute;e aux processus initi&eacute;s par les
index d743e7bd08f9c255be79d6a8aa4ed82d2a3513c0..b61ab411a58a647456ed17795644a6d826e5d062 100644 (file)
@@ -32,8 +32,6 @@
 <a href="../tr/rewrite/avoid.html" hreflang="tr" rel="alternate" title="T&uuml;rk&ccedil;e">&nbsp;tr&nbsp;</a> |
 <a href="../zh-cn/rewrite/avoid.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese">&nbsp;zh-cn&nbsp;</a></p>
 </div>
-<div class="outofdate">Cette traduction peut &ecirc;tre p&eacute;rim&eacute;e. V&eacute;rifiez la version
-            anglaise pour les changements r&eacute;cents.</div>
 
 
 <p>Ce document est un compl&eacute;ment &agrave; la <a href="../mod/mod_rewrite.html">Documentation de r&eacute;f&eacute;rence</a> de
@@ -64,11 +62,19 @@ vous tourner vers <code class="module"><a href="../mod/mod_rewrite.html">mod_rew
 </div>
 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif"> <a href="#redirect">Redirection simple</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#alias">Alias d'URL</a></li>
-<li><img alt="" src="../images/down.gif"> <a href="#vhosts">H&eacute;bergement virtuel</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#proxy">Mandat simple</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#setenv">Test de variables d'environnement</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#fallback-resource">Contr&ocirc;leur frontal / Routage des
+ressources</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#ifexpr">Configuration conditionnelle avec des
+expressions rationnelles</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#blocked-inline-images">Blocage du r&eacute;f&eacute;rencement &agrave; chaud (Hotlinking) d'images</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#blocking-of-robots">Blocage des robots</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#host-deny">Interdire des h&ocirc;tes dans une liste de rejets</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#vhosts">Serveurs virtuels</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#load-balancing">R&eacute;partition de charge</a></li>
 </ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Documentation du module mod_rewrite</a></li><li><a href="intro.html">Introduction &agrave; mod_rewrite</a></li><li><a href="remapping.html">Redirection et remise en
-correspondance</a></li><li><a href="access.html">Contr&ocirc;le d'acc&egrave;s</a></li><li><a href="vhosts.html">Serveurs virtuels</a></li><li><a href="proxy.html">Serveurs mandataires</a></li><li><a href="rewritemap.html">Utilisation de RewriteMap</a></li><li><a href="advanced.html">Techniques avanc&eacute;es</a></li></ul></div>
+correspondance</a></li><li><a href="htaccess.html">R&eacute;&eacute;critures par r&eacute;pertoire</a></li><li><a href="flags.html">Drapeaux de RewriteRule</a></li><li><a href="vhosts.html">Serveurs virtuels</a></li><li><a href="rewritemap.html">Utilisation de RewriteMap</a></li><li><a href="tech.html">D&eacute;tails techniques</a></li></ul></div>
 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="redirect">Redirection simple <a title="Lien permanent" href="#redirect" class="permalink">&para;</a></h2>
@@ -108,44 +114,31 @@ rediriger toutes les URLs de niveaux inf&eacute;rieurs comme
 <code>example.com</code> vers <code>www.example.com</code>, voir la
 m&eacute;thode <a href="remapping.html#canonicalhost">Noms d'h&ocirc;tes canoniques</a>.</p>
 
-<p>Pour rediriger les URLs <code>http</code> vers <code>https</code>,
-utilisez cette d&eacute;finition :</p>
-
-<pre class="prettyprint lang-config">&lt;VirtualHost *:80&gt;
-    ServerName www.example.com
-    Redirect "/" "https://www.example.com/"
-&lt;/VirtualHost&gt;
-
-&lt;VirtualHost *:443&gt;
-    ServerName www.example.com
-    # ... ins&eacute;rer ici la configuration SSL
-&lt;/VirtualHost&gt;</pre>
-
-
-<p>L'utilisation de la directive <code>RewriteRule</code> pour accomplir
-cette t&acirc;che peut se justifier s'il existe d'autres directives
-<code>RewriteRule</code> dans la m&ecirc;me port&eacute;e. En effet, lorsque des
-directives <code>Redirect</code> et <code>RewriteRule</code> se trouvent
-dans la m&ecirc;me port&eacute;e, les directives <code>RewriteRule</code> sont
-ex&eacute;cut&eacute;es en premier, sans tenir compte de leur ordre d'apparition dans
-le fichier de configuration.</p>
-
-<p>Dans le cas de la redirection <em>http-vers-https</em>, l'utilisation
-de r&egrave;gles <code>RewriteRule</code> se justifie si vous n'avez pas acc&egrave;s
-au fichier de configuration principal, et devez donc accomplir cette
-t&acirc;che au sein d'un fichier <code>.htaccess</code>.</p>
+<p>Pour rediriger les URLs <code>http</code> vers <code>https</code>, une
+directive <code class="directive"><a href="../mod/mod_alias.html#redirect">Redirect</a></code> dans un serveur
+virtuel HTTP d&eacute;di&eacute; est l&rsquo;approche la plus propre. Voir la recette <a href="remapping.html#https-redirect">Forcer HTTPS</a> pour la configuration
+recommand&eacute;e et l&rsquo;alternative de <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> pour l&rsquo;utilisation
+des fichiers <code>.htaccess</code>.</p>
+
+    <div class="note"><h3>Ordre de traitement</h3>
+    <p>Si vous m&eacute;langez des directives <code class="directive"><a href="../mod/mod_alias.html#redirect">Redirect</a></code> et <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> dans le m&ecirc;me contexte, sachez
+    que leur ordre d&rsquo;ex&eacute;cution d&eacute;pend de l&rsquo;emplacement o&ugrave; elles apparaissent.
+    Dans un contexte de serveur virtuel ou global, c&rsquo;est
+    <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> qui agit en premier, alors que dans un contexte
+    de r&eacute;pertoire (fichiers <code>.htaccess</code>), c&rsquo;est
+    <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code>. Voir <a href="tech.html#order">Ordre de
+    traitement des modules</a> pour les d&eacute;tails.</p>
+    </div>
 
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="alias">Alias d'URL <a title="Lien permanent" href="#alias" class="permalink">&para;</a></h2>
-<p>La directive <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code> permet
-de mettre en correspondance un URI avec un r&eacute;pertoire, ce dernier &eacute;tant
-en g&eacute;n&eacute;ral situ&eacute; en dehors de l'arborescence d&eacute;finie par la directive
-<code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>. Bien qu'il soit
-possible d'effectuer cette mise en correspondance avec
-<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, il est pr&eacute;f&eacute;rable d'utiliser la directive
-<code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code> pour des raisons de simplicit&eacute;
-et de performances.</p>
+<p>La directive <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code> permet de mettre
+en correspondance un chemin d&rsquo;URL avec un r&eacute;pertoire, ce dernier &eacute;tant en
+g&eacute;n&eacute;ral situ&eacute; en dehors de l'arborescence d&eacute;finie par la directive <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>. Bien qu'il soit possible d'effectuer
+cette mise en correspondance avec <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, il est
+pr&eacute;f&eacute;rable d'utiliser la directive <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code> pour des raisons de simplicit&eacute; et de
+performances.</p>
 
 <div class="example"><h3>Utilisation de la directive Alias</h3><pre class="prettyprint lang-config">Alias "/cats" "/var/www/virtualhosts/felines/htdocs"</pre>
 </div>
@@ -161,31 +154,6 @@ serveur principal ou de serveur virtuel.
 <p>En outre, vous pouvez arriver au m&ecirc;me r&eacute;sultat avec les liens
 symboliques, pourvu que <code>Options FollowSymLinks</code> soit activ&eacute;
 sur votre serveur.</p>
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
-<div class="section">
-<h2 id="vhosts">H&eacute;bergement virtuel <a title="Lien permanent" href="#vhosts" class="permalink">&para;</a></h2>
-<p>Bien qu'il soit possible de g&eacute;rer les <a href="vhosts.html">serveurs
-virtuels avec mod_rewrite</a>, il s'agit rarement de la bonne m&eacute;thode.
-Il est pratiquement toujours pr&eacute;f&eacute;rable de cr&eacute;er des blocs
-<code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> individuels.
-Dans l'&eacute;ventualit&eacute; o&ugrave; vous devez g&eacute;rer
-un grand nombre de serveurs virtuels, vous devez vous tourner vers
-<code class="module"><a href="../mod/mod_vhost_alias.html">mod_vhost_alias</a></code> pour cr&eacute;er ces serveurs
-automatiquement.</p>
-
-<p>Il est aussi possible d'utiliser des modules comme <code class="module"><a href="../mod/mod_macro.html">mod_macro</a></code> pour
-cr&eacute;er un grand nombre de serveurs virtuels dynamiquement.</p>
-
-<p>L'utilisation de <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> pour la cr&eacute;ation de
-serveurs virtuels peut se r&eacute;v&eacute;ler appropri&eacute;e si votre service
-d'h&eacute;bergement ne vous permet pas d'acc&eacute;der aux fichiers de configuration
-du serveur, et que vous soyez par cons&eacute;quent oblig&eacute; de passer par les
-fichiers <code>.htaccess</code>.</p>
-
-<p>Voir le document <a href="vhosts.html">cr&eacute;ation de serveurs virtuels
-avec mod_rewrite</a> pour plus de d&eacute;tails sur la mani&egrave;re d'y parvenir si
-cela semble &ecirc;tre tout de m&ecirc;me la meilleure approche.</p>
-
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="proxy">Mandat simple <a title="Lien permanent" href="#proxy" class="permalink">&para;</a></h2>
@@ -217,6 +185,23 @@ lorsque d'autres <code>RewriteRule</code>s se trouvent dans la m&ecirc;me port&e
 car elles agissent en g&eacute;n&eacute;ral avant les directives
 <code>ProxyPass</code>, et peuvent ainsi les court-circuiter.</p>
 
+<p><code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> s&rsquo;av&egrave;re vraiment
+utile pour ne mandater les requ&ecirc;tes que si le contenu n&rsquo;existe pas localement
+&mdash;&nbsp;par exemple, lors de la migration d&rsquo;un serveur vers un autre&nbsp;:</p>
+
+<pre class="prettyprint lang-config">RewriteCond "%{REQUEST_FILENAME}"       !-f
+RewriteCond "%{REQUEST_FILENAME}"       !-d
+RewriteRule "^/(.*)"                    "http://old.example.com/$1" [P]
+ProxyPassReverse "/" "http://old.example.com/"</pre>
+
+
+<p>Dans cet exemple, les requ&ecirc;tes pour des ressources qui n&rsquo;ont pas encore &eacute;t&eacute;
+migr&eacute;es sont mandat&eacute;es silencieusement vers l&rsquo;ancien serveur. Lors de la
+migration du contenu, les fichiers locaux ont la priorit&eacute;. N&rsquo;oubliez pas de
+toujours inclure une directive <code class="directive"><a href="../mod/mod_proxy.html#proxypassreverse">ProxyPassReverse</a></code> pour &ecirc;tre s&ucirc;r que toute
+redirection effectu&eacute;e par le serveur dorsal est correctement transmise au
+client.</p>
+
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="setenv">Test de variables d'environnement <a title="Lien permanent" href="#setenv" class="permalink">&para;</a></h2>
@@ -248,6 +233,324 @@ l'&eacute;valuation des expressions</a> pour une vue d'ensemble des types
 d'expressions que vous pouvez utiliser dans les sections <code class="directive"><a href="../mod/core.html#if">&lt;If&gt;</a></code>,
 ainsi que dans certaines directives.</p>
 
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="fallback-resource">Contr&ocirc;leur frontal / Routage des
+ressources <a title="Lien permanent" href="#fallback-resource" class="permalink">&para;</a></h2>
+
+<p>Une utilisation tr&egrave;s courante de <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> consiste &agrave;
+router toutes les requ&ecirc;tes pour des ressources non existantes vers un seul
+script de contr&ocirc;le frontal (par exemple <code>index.php</code>). Il s&rsquo;agit de la
+base du routage dans le cadre de la plus grande partie du web moderne.</p>
+
+<p>L&rsquo;approche typique avec <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> est&nbsp;:</p>
+
+<pre class="prettyprint lang-config">RewriteEngine On
+RewriteCond "%{REQUEST_FILENAME}" !-f
+RewriteCond "%{REQUEST_FILENAME}" !-d
+RewriteRule "^(.*)$" "/index.php" [L]</pre>
+
+
+<p>Cette op&eacute;ration peut &ecirc;tre effectu&eacute;e beaucoup plus simplement avec la
+directive <code class="directive"><a href="../mod/mod_dir.html#fallbackresource">FallbackResource</a></code>&nbsp;:</p>
+
+<pre class="prettyprint lang-config">FallbackResource /index.php</pre>
+
+
+<p>La directive <code class="directive"><a href="../mod/mod_dir.html#fallbackresource">FallbackResource</a></code> fait la
+m&ecirc;me chose &mdash;&nbsp;les requ&ecirc;tes pour des fichiers et r&eacute;pertoires existants sont
+trait&eacute;es normalement, toutes les autres &eacute;tant rout&eacute;es vers la ressource
+sp&eacute;cifi&eacute;e &mdash;&nbsp;mais sans la surcharge de travail et la complexit&eacute; du moteur de
+r&eacute;&eacute;criture. Elle fonctionne dans les deux contextes de configuration globale du
+serveur et des fichiers <code>.htaccess</code>.</p>
+
+<p>Pour d&eacute;sactiver une <code>FallbackResource</code> d&eacute;finie dans un r&eacute;pertoire
+parent&nbsp;:</p>
+
+<pre class="prettyprint lang-config">FallbackResource disabled</pre>
+
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="ifexpr">Configuration conditionnelle avec des
+expressions rationnelles <a title="Lien permanent" href="#ifexpr" class="permalink">&para;</a></h2>
+
+<p>Dans de nombreux cas, l&rsquo;utilisation de <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code> peut &ecirc;tre remplac&eacute;e par la
+directive <code class="directive"><a href="../mod/core.html#if">&lt;If&gt;</a></code> qui prend en
+charge une <a href="../expr.html">syntaxe des expressions</a> riche et s&rsquo;int&egrave;gre
+parfaitement avec les autres directives de httpd.</p>
+
+<p>Redirection bas&eacute;e sur un &eacute;l&eacute;ment de la cha&icirc;ne de param&egrave;tres&nbsp;:</p>
+
+<pre class="prettyprint lang-config">&lt;If "%{QUERY_STRING} =~ /lang=fr/"&gt;
+    Redirect "/welcome" "/bienvenue"
+&lt;/If&gt;</pre>
+
+
+<p>Restriction d&rsquo;acc&egrave;s en fonction de la m&eacute;thode de la requ&ecirc;te&nbsp;:</p>
+
+<pre class="prettyprint lang-config">&lt;If "%{REQUEST_METHOD} IN {'DELETE', 'PUT', 'PATCH'}"&gt;
+    Require ip 10.0.0.0/8
+&lt;/If&gt;</pre>
+
+
+<p>Blocage des requ&ecirc;tes qui ne comportent pas d&rsquo;en-t&ecirc;te Host (clients
+HTTP/1.0)&nbsp;:</p>
+
+<pre class="prettyprint lang-config">&lt;If "-z req('Host')"&gt;
+    Require all denied
+&lt;/If&gt;</pre>
+
+
+<p>Voir la <a href="../expr.html">documentation sur l&rsquo;&eacute;valuation des
+expressions</a> pour une description compl&egrave;te de la syntaxe disponible dans les
+blocs <code class="directive"><a href="../mod/core.html#if">&lt;If&gt;</a></code>.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="blocked-inline-images">Blocage du r&eacute;f&eacute;rencement &agrave; chaud (Hotlinking) d'images <a title="Lien permanent" href="#blocked-inline-images" class="permalink">&para;</a></h2>
+
+      
+
+      <dl>
+        <dt>Description :</dt>
+
+        <dd>
+         <p>Le r&eacute;f&eacute;rencement &agrave; chaud consiste pour les autres sites &agrave; inclure
+         directement vos images dans leurs pages en utilisant votre bande
+         passante pour servir des contenus pour le site de quelqu'un d'autre.
+         Vous pouvez emp&ecirc;cher cela sans utiliser
+         <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.</p>
+        </dd>
+
+        <dt>Solution :</dt>
+
+    <dd>
+      <p>Utilisez la directive <code class="directive"><a href="../mod/mod_setenvif.html#setenvif">SetEnvIf</a></code> avec la directive <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>&nbsp;:</p>
+
+      <pre class="prettyprint lang-config">SetEnvIf Referer example\.com localreferer
+&lt;FilesMatch "\.(jpg|png|gif)$"&gt;
+    Require env localreferer
+&lt;/FilesMatch&gt;</pre>
+
+    </dd>
+
+    <dt>Discussion&nbsp;:</dt>
+
+    <dd>
+      <p>Si vous avez besoin d&rsquo;une logique plus complexe &mdash;&nbsp;comme servir une
+      autre image aux r&eacute;f&eacute;renceurs &agrave; chaud au lieu de rejeter la requ&ecirc;te &mdash;&nbsp;vous
+      aurez peut-&ecirc;tre besoin de <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>. Les exemples
+      suivants s&rsquo;appuient sur l&rsquo;en-t&ecirc;te <code>HTTP_REFERER</code> qui est
+      facultatif et peut &ecirc;tre usurp&eacute;. La condition <code>!^$</code> autorise les
+      requ&ecirc;tes qui ne comportent aucun en-t&ecirc;te Referer, de sorte que les
+      utilisateurs qui saisissent l&rsquo;URL directement, ou dont les navigateurs
+      suppriment cet en-t&ecirc;te ne soient pas bloqu&eacute;s.</p>
+
+      <p>Rejeter purement et simplement la requ&ecirc;te&nbsp;:</p>
+
+<pre class="prettyprint lang-config">RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com" [NC]
+RewriteRule "\.(gif|jpg|png)$" "-"                [F,NC]</pre>
+
+
+      <p>Servir une image alternative&nbsp;:</p>
+
+<pre class="prettyprint lang-config">RewriteCond "%{HTTP_REFERER}"  "!^$"
+RewriteCond "%{HTTP_REFERER}"  "!www.example.com"      [NC]
+RewriteRule "\.(gif|jpg|png)$" "/images/go-away.png"   [R,NC]</pre>
+
+
+    </dd>
+  </dl>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="blocking-of-robots">Blocage des robots <a title="Lien permanent" href="#blocking-of-robots" class="permalink">&para;</a></h2>
+
+  
+
+  <dl>
+    <dt>Description&nbsp;:</dt>
+
+    <dd>
+      <p>Vous voulez bloquer les requ&ecirc;tes persistantes d&rsquo;un robot particulier ou
+      d&rsquo;un agent utilisateur qui ignore votre <code>/robots.txt</code>.</p>
+    </dd>
+
+    <dt>Solution&nbsp;:</dt>
+
+    <dd>
+      <p>Utilisez la directive <code class="directive"><a href="../mod/mod_setenvif.html#setenvifnocase">SetEnvIfNoCase</a></code> avec la directive
+      <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>&nbsp;:</p>
+
+      <pre class="prettyprint lang-config">SetEnvIfNoCase User-Agent ^NameOfBadRobot goaway
+&lt;Location "/secret/files"&gt;
+    &lt;RequireAll&gt;
+        Require all granted
+        Require not env goaway
+    &lt;/RequireAll&gt;
+&lt;/Location&gt;</pre>
+
+    </dd>
+
+    <dt>Discussion&nbsp;:</dt>
+
+    <dd>
+      <p>Toute technique qui s&rsquo;appuie sur la cha&icirc;ne <code>USER_AGENT</code> peut
+      &ecirc;tre facilement contourn&eacute;e, car cette cha&icirc;ne peut &ecirc;tre modifi&eacute;e par le
+      client. Si vous subissez une attaque soutenue, vous devez la traiter &agrave; un
+      niveau sup&eacute;rieur, par exemple au niveau de votre pare-feu.</p>
+
+      <p>Si vous devez combiner la recherche de correspondance par agent
+      utilisateur et par adresse IP, <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> peut &ecirc;tre
+      utilis&eacute; en remplacement&nbsp;:</p>
+
+<pre class="prettyprint lang-config">RewriteCond "%{HTTP_USER_AGENT}"   "^NameOfBadRobot"
+RewriteCond "%{REMOTE_ADDR}"       "=123\.45\.67\.[8-9]"
+RewriteRule "^/secret/files/"      "-"                   [F]</pre>
+
+
+    </dd>
+  </dl>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="host-deny">Interdire des h&ocirc;tes dans une liste de rejets <a title="Lien permanent" href="#host-deny" class="permalink">&para;</a></h2>
+
+  
+
+  <dl>
+    <dt>Description&nbsp;:</dt>
+
+    <dd>
+      <p>Nous souhaitons &eacute;tablir une liste des h&ocirc;tes auxquels nous voulons
+      interdire l&rsquo;acc&egrave;s &agrave; notre serveur.</p>
+    </dd>
+
+    <dt>Solution&nbsp;:</dt>
+
+    <dd>
+      <p>Pour un simple blocage bas&eacute; sur l&rsquo;adresse IP, utilisez la directive
+      <code class="directive"><a href="../mod/mod_authz_host.html#require">Require</a></code> directement&nbsp;:</p>
+
+      <pre class="prettyprint lang-config">&lt;Location "/"&gt;
+    Require all granted
+    Require not ip 193.102.180.41
+    Require not ip 192.76.162.40
+&lt;/Location&gt;</pre>
+
+    </dd>
+
+    <dt>Discussion&nbsp;:</dt>
+
+    <dd>
+      <p>Si vous avez besoin d&rsquo;une liste d&rsquo;interdiction dynamique bas&eacute;e sur un
+      fichier (plut&ocirc;t que d&rsquo;&eacute;num&eacute;rer des adresses IP dans la configuration),
+      vous pouvez utiliser <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> et sa directive
+      <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>&nbsp;:</p>
+
+<pre class="prettyprint lang-config">RewriteEngine on
+RewriteMap    hosts-deny  "txt:/path/to/hosts.deny"
+RewriteCond   "${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND}" "!=NOT-FOUND" [OR]
+RewriteCond   "${hosts-deny:%{REMOTE_HOST}|NOT-FOUND}" "!=NOT-FOUND"
+RewriteRule   "^"                                      "-"           [F]</pre>
+
+
+      <p>Le fichier de mappage contient une entr&eacute;e par ligne, avec une adresse
+      IP ou un nom d&rsquo;h&ocirc;te comme cl&eacute; et une valeur factice (parce que la
+      directive <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code> requiert
+      des paires cl&eacute;/valeur)&nbsp;:</p>
+
+<div class="example"><p><code>
+##  hosts.deny<br>
+193.102.180.41 -<br>
+192.76.162.40  -<br>
+</code></p></div>
+
+      <p>La seconde directive <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code> pr&eacute;suppose que
+      <code>HostnameLookups</code> est activ&eacute;. Dans le cas contraire,
+      supprimer-la, ainsi que le drapeau <code>[OR]</code> de la premi&egrave;re
+      condition.</p>
+    </dd>
+  </dl>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="vhosts">Serveurs virtuels <a title="Lien permanent" href="#vhosts" class="permalink">&para;</a></h2>
+<p>Bien qu&rsquo;il soit possible de g&eacute;rer les <a href="vhosts.html">serveurs virtuels
+avec mod_rewrite</a>, il s&rsquo;agit rarement de la bonne m&eacute;thode. Le bon choix
+consiste pratiquement toujours &agrave; cr&eacute;er des blocs <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> individuels. Si vous devez g&eacute;rer un tr&egrave;s
+grand nombre de serveurs virtuels, choisissez plut&ocirc;t d&rsquo;utiliser
+<code class="module"><a href="../mod/mod_vhost_alias.html">mod_vhost_alias</a></code> pour cr&eacute;er ces h&ocirc;tes automatiquement.</p>
+
+<p>Des modules tels que <code class="module"><a href="../mod/mod_macro.html">mod_macro</a></code> permettent aussi de cr&eacute;er un
+grand nombre de serveurs virtuels dynamiquement.</p>
+
+<p>Utiliser <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> pour la cr&eacute;ation de serveurs virtuels
+peut convenir si vous utilisez un service d&rsquo;h&eacute;bergement qui ne vous permet pas
+d&rsquo;acc&eacute;der aux fichiers de configuration du serveur, et que vous soyez par
+cons&eacute;quent contraint d&rsquo;utiliser des fichiers <code>.htaccess</code>.</p>
+
+<p>Voir le document <a href="vhosts.html">les serveurs virtuels avec
+mod_rewrite</a> pour plus de d&eacute;tails sur la mani&egrave;re de proc&eacute;der si cette
+approche vous semble encore &ecirc;tre la bonne.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="load-balancing">R&eacute;partition de charge <a title="Lien permanent" href="#load-balancing" class="permalink">&para;</a></h2>
+
+  
+
+  <dl>
+    <dt>Description&nbsp;:</dt>
+
+    <dd>
+      <p>Nous souhaitons r&eacute;partir la charge entre plusieurs serveurs dorsaux.</p>
+    </dd>
+
+    <dt>Solution&nbsp;:</dt>
+
+    <dd>
+      <p>Utilisez le module <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> qui fournit une
+      solution de r&eacute;partition de charge flexible et totalement fonctionnelle. Il
+      prend en charge plusieurs algorithmes de r&eacute;partition, la persistance de
+      session, les contr&ocirc;les de bon fonctionnement et une configuration
+      dynamique avec le gestionnaire de r&eacute;partition de charge (Balancer Manager)
+      &mdash;&nbsp;toutes choses impossibles avec l&rsquo;approche de
+      <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.</p>
+
+<pre class="prettyprint lang-config">&lt;Proxy "balancer://mycluster"&gt;
+    BalancerMember "http://one.example.com"
+    BalancerMember "http://two.example.com"
+    BalancerMember "http://three.example.com"
+&lt;/Proxy&gt;
+ProxyPass        "/"  "balancer://mycluster/"
+ProxyPassReverse "/"  "balancer://mycluster/"</pre>
+
+
+    </dd>
+
+    <dt>Discussion&nbsp;:</dt>
+    <dd>
+
+<p>Il est possible de mettre en Å“uvre une r&eacute;partition de charge al&eacute;atoire
+rudimentaire en utilisant <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> et une directive
+<code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code> de type
+<code>rnd</code>&nbsp;:</p>
+
+<pre class="prettyprint lang-config">RewriteEngine on
+RewriteMap  lb       "rnd:/path/to/serverlist.txt"
+RewriteRule "^/(.*)" "http://${lb:servers}/$1"     [P,L]</pre>
+
+
+<p><code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> est cependant beaucoup plus flexible et
+fonctionnel que tout ce que vous pourrez &laquo;&nbsp;bricoler&nbsp;&raquo; en utilisant
+<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, et correspond &agrave; l&rsquo;approche recommand&eacute;e.</p>
+
+    </dd>
+  </dl>
+
 </div></div>
 <div class="bottomlang">
 <p><span>Langues Disponibles: </span><a href="../de/rewrite/avoid.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
index 2199f87ca2bc1c1fa8426a902dacb0e738973936..a496ea22d0d4c681f2dd66a6e49fc21f4233beb8 100644 (file)
@@ -10,7 +10,7 @@
     <variant outdated="yes">de</variant>
     <variant>en</variant>
     <variant outdated="yes">es</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
     <variant outdated="yes">ja</variant>
     <variant outdated="yes">ko</variant>
     <variant outdated="yes">tr</variant>
index 0400b8d93808dbfffadca80eac1d41e0041c70eb..88fd09d4fe9890bc9d536fa77c376d233b92f9b7 100644 (file)
 <a href="../tr/rewrite/flags.html" hreflang="tr" rel="alternate" title="T&uuml;rk&ccedil;e">&nbsp;tr&nbsp;</a> |
 <a href="../zh-cn/rewrite/flags.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese">&nbsp;zh-cn&nbsp;</a></p>
 </div>
-<div class="outofdate">Cette traduction peut &ecirc;tre p&eacute;rim&eacute;e. V&eacute;rifiez la version
-            anglaise pour les changements r&eacute;cents.</div>
 
 <p>Ce document d&eacute;crit les drapeaux disponibles dans la directive
 <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>, en fournissant
 des explications d&eacute;taill&eacute;es et des exemples.</p>
 </div>
 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif"> <a href="#introduction">Introduction</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#flag_quickref">R&eacute;f&eacute;rence rapide des drapeaux</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#flag_b">B (&eacute;chappement dans les r&eacute;f&eacute;rences arri&egrave;res)</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#flag_bnp">BNP|backrefnoplus (ne pas &eacute;chapper
 l'espace en +)</a></li>
@@ -70,7 +69,7 @@ l'espace en +)</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#flag_unsafe_prefix_stat">UnsafePrefixStat</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#flag_unc">UNC</a></li>
 </ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Documentation du module</a></li><li><a href="intro.html">Introduction &agrave; mod_rewrite</a></li><li><a href="remapping.html">Redirection and remise en
-correspondance</a></li><li><a href="access.html">Contr&ocirc;le d'acc&egrave;s</a></li><li><a href="vhosts.html">Serveurs virtuels</a></li><li><a href="proxy.html">Mise en cache</a></li><li><a href="rewritemap.html">Utilisation de RewriteMap</a></li><li><a href="advanced.html">Techniques avanc&eacute;es</a></li><li><a href="avoid.html">Quand ne pas utiliser mod_rewrite</a></li></ul></div>
+correspondance</a></li><li><a href="htaccess.html">R&eacute;&eacute;critures par r&eacute;pertoire</a></li><li><a href="vhosts.html">Serveurs virtuels</a></li><li><a href="rewritemap.html">Utilisation de RewriteMap</a></li><li><a href="avoid.html">Quand ne pas utiliser mod_rewrite</a></li><li><a href="tech.html">D&eacute;tails techniques</a></li></ul></div>
 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="introduction">Introduction <a title="Lien permanent" href="#introduction" class="permalink">&para;</a></h2>
@@ -89,14 +88,146 @@ bien m&eacute;moriser ce que chaque drapeau est suppos&eacute; faire.
 Certains drapeaux acceptent un ou plusieurs arguments. Les drapeaux ne
 sont pas sensibles &agrave; la casse.</p>
 
-<p>Les drapeaux qui modifient les m&eacute;tadonn&eacute;es associ&eacute;es &agrave; la requ&ecirc;te
-(T=, H=, E=) n'ont aucun effet dans un contexte de r&eacute;pertoire ou de
-fichier htaccess, lorsqu'une substitution (autre que '-') est effectu&eacute;e
-au cours de la m&ecirc;me passe du processus de r&eacute;&eacute;criture.
-</p>
+<p>Les drapeaux qui modifient les m&eacute;tadonn&eacute;es associ&eacute;es &agrave; la requ&ecirc;te (T=, H=,
+E=) n'ont aucun effet dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de
+r&eacute;pertoire</a> ou de fichier htaccess, lorsqu'une substitution (autre que
+'-') est effectu&eacute;e au cours de la m&ecirc;me passe du processus de r&eacute;&eacute;criture.  </p>
 
 <p>Chaque drapeau disponible est pr&eacute;sent&eacute; ici, avec un exemple
 d'utilisation.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="flag_quickref">R&eacute;f&eacute;rence rapide des drapeaux <a title="Lien permanent" href="#flag_quickref" class="permalink">&para;</a></h2>
+
+<p>Les drapeaux peuvent &ecirc;tre combin&eacute;s&nbsp;: <code>[R=301,L]</code>, <code>[P,QSA]</code>,
+<code>[E=VAR:val,L]</code>. Cette table les groupe par fonction et les trie
+selon la fr&eacute;quence de leur utilisation.</p>
+
+<table class="bordered"><tr class="header">
+  <th>Drapeau</th>
+  <th>Fonction</th>
+  <th>Effet</th>
+  <th>Combinaisons courantes</th>
+</tr>
+<tr><td colspan="4"><em><strong>Contr&ocirc;le de flux</strong></em></td></tr>
+<tr class="odd">
+  <td><a href="#flag_l">[L]</a></td>
+  <td>Derni&egrave;re r&egrave;gle</td>
+  <td>Arr&ecirc;te le traitement des r&egrave;gles (pour cette passe)</td>
+  <td>[R=301,L]  [F]  [G]</td>
+</tr>
+<tr>
+  <td><a href="#flag_end">[END]</a></td>
+  <td>Arr&ecirc;t complet</td>
+  <td>Arr&ecirc;te tout le processus de r&eacute;&eacute;criture (pas de r&eacute;entrance dans .htaccess)</td>
+  <td>[R=301,END]</td>
+</tr>
+<tr class="odd">
+  <td><a href="#flag_s">[S=N]</a></td>
+  <td>Saut</td>
+  <td>Sauter les N prochaines r&egrave;gles (logique if/else)</td>
+  <td></td>
+</tr>
+<tr>
+  <td><a href="#flag_n">[N]</a></td>
+  <td>Instance suivante de la boucle</td>
+  <td>Red&eacute;marrer le traitement du jeu de r&egrave;gles &agrave; partir de la premi&egrave;re
+  (attention&nbsp;: risque de boucle infinie)</td>
+  <td></td>
+</tr>
+<tr class="odd">
+  <td><a href="#flag_c">[C]</a></td>
+  <td>Cha&icirc;nage</td>
+  <td>Cha&icirc;ner la r&egrave;gle actuelle &agrave; la prochaine&nbsp;; si la r&egrave;gle actuelle &eacute;choue,
+  sauter les r&egrave;gles cha&icirc;n&eacute;es</td>
+  <td></td>
+</tr>
+<tr><td colspan="4"><em><strong>Redirection et mandatement</strong></em></td></tr>
+<tr class="odd">
+  <td><a href="#flag_r">[R=code]</a></td>
+  <td>Redirection</td>
+  <td>Redirection externe (par d&eacute;faut 302). Utilisez Redirect/RedirectMatch pour
+  les cas simple</td>
+  <td>[R=301,L]  [R=302,L]</td>
+</tr>
+<tr>
+  <td><a href="#flag_p">[P]</a></td>
+  <td>Mandatement</td>
+  <td>Mandatement inverse vers une cible (n&eacute;cessite <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>)</td>
+  <td>[P,QSA]</td>
+</tr>
+<tr class="odd"><td colspan="4"><em><strong>Contr&ocirc;le d&rsquo;acc&egrave;s</strong></em></td></tr>
+<tr>
+  <td><a href="#flag_f">[F]</a></td>
+  <td>Interdiction</td>
+  <td>Renvoie 403 (implique [L])</td>
+  <td></td>
+</tr>
+<tr class="odd">
+  <td><a href="#flag_g">[G]</a></td>
+  <td>Parti</td>
+  <td>Renvoie 410 (implique [L])</td>
+  <td></td>
+</tr>
+<tr><td colspan="4"><em><strong>URL / cha&icirc;ne de param&egrave;tres</strong></em></td></tr>
+<tr class="odd">
+  <td><a href="#flag_qsa">[QSA]</a></td>
+  <td>Ajout de la cha&icirc;ne de param&egrave;tres</td>
+  <td>Ajout de la cha&icirc;ne de param&egrave;tres originelle &agrave; la substitution</td>
+  <td>[QSA,L]  [P,QSA]</td>
+</tr>
+<tr>
+  <td><a href="#flag_qsd">[QSD]</a></td>
+  <td>Suppression de la cha&icirc;ne de param&egrave;tres</td>
+  <td>Supprime enti&egrave;rement la cha&icirc;ne de param&egrave;tres</td>
+  <td>[R=301,QSD,L]</td>
+</tr>
+<tr class="odd">
+  <td><a href="#flag_b">[B]</a></td>
+  <td>&Eacute;chappement des r&eacute;f&eacute;rences arri&egrave;res</td>
+  <td>R&eacute;encode les caract&egrave;res sp&eacute;ciaux dans les r&eacute;f&eacute;rences arri&egrave;res</td>
+  <td>[B,PT]</td>
+</tr>
+<tr>
+  <td><a href="#flag_ne">[NE]</a></td>
+  <td>Pas d&rsquo;&eacute;chappement</td>
+  <td>Pas d&rsquo;&eacute;chappement des caract&egrave;res sp&eacute;ciaux dans la sortie (pass #, ? through)</td>
+  <td>[R=301,NE,L]</td>
+</tr>
+<tr class="odd"><td colspan="4"><em><strong>Metadonn&eacute;es et gestionnaires</strong></em></td></tr>
+<tr>
+  <td><a href="#flag_e">[E]</a></td>
+  <td>D&eacute;finition d&rsquo;une variable d&rsquo;environnement</td>
+  <td>D&eacute;finit une variable d&rsquo;environnement</td>
+  <td>[E=VAR:val,L]</td>
+</tr>
+<tr class="odd">
+  <td><a href="#flag_t">[T]</a></td>
+  <td>Type MIME</td>
+  <td>For&ccedil;age du type de contenu</td>
+  <td></td>
+</tr>
+<tr>
+  <td><a href="#flag_h">[H]</a></td>
+  <td>Gestionnaire</td>
+  <td>For&ccedil;age d&rsquo;un gestionnaire de contenu</td>
+  <td></td>
+</tr>
+<tr class="odd">
+  <td><a href="#flag_pt">[PT]</a></td>
+  <td>Transmission r&eacute;sultat</td>
+  <td>Transmission du r&eacute;sultat au gestionnaire suivant (requis pour Alias/ScriptAlias)</td>
+  <td>[PT,L]</td>
+</tr>
+<tr><td colspan="4"><em><strong>Cookie</strong></em></td></tr>
+<tr class="odd">
+  <td><a href="#flag_co">[CO]</a></td>
+  <td>D&eacute;finir un cookie</td>
+  <td>D&eacute;finir un cookie HTTP pour la r&eacute;ponse</td>
+  <td>[CO=name:val:.domain,R=302,L]</td>
+</tr>
+</table>
+
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="flag_b">B (&eacute;chappement dans les r&eacute;f&eacute;rences arri&egrave;res) <a title="Lien permanent" href="#flag_b" class="permalink">&para;</a></h2>
@@ -164,6 +295,10 @@ RewriteRule "^search/(.*)$" "/search.php?term=$1" "[B= ?]"</pre>
 
 <p>Pour d&eacute;finir la liste des caract&egrave;res &agrave; &eacute;chapper de cette mani&egrave;re, voir <a href="#flag_bne">#flag_bne</a> et <a href="#flag_bctls">#flag_bctls</a></p>
 
+<p>Voir <a href="tech.html#encoding">Encodage et d&eacute;codage des URLs</a> pour une
+explication d&eacute;taill&eacute;e de la mani&egrave;re dont httpd d&eacute;code les URIs avant la mise en
+correspondance des motifs.</p>
+
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="flag_bnp">BNP|backrefnoplus (ne pas &eacute;chapper
@@ -181,6 +316,10 @@ RewriteRule "^search/(.*)$" "/search.php/$1" "[B,BNP]"</pre>
 <p>Ce drapeau est disponible &agrave; partir de la version 2.4.26 du serveur HTTP
 Apache.</p>
 
+<p>Voir <a href="tech.html#encoding">Encodage et d&eacute;codage des URLs</a> pour
+d&eacute;couvrir la mani&egrave;re dont l&rsquo;encodage est g&eacute;r&eacute; dans le tube (pipeline) de
+r&eacute;&eacute;criture.</p>
+
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="flag_bctls">BCTLS <a title="Lien permanent" href="#flag_bctls" class="permalink">&para;</a></h2>
@@ -193,7 +332,7 @@ rejet&eacute;s lorsqu'ils sont copi&eacute;s dans la cha&icirc;ne de param&egrav
 RewriteRule "^search/(.*)$" "/search.php/$1" "[BCTLS]"</pre>
 
 
-<p>Ce drapeau est disponible &agrave; partir de la version 2.5.1 du serveur HTTP
+<p>Ce drapeau est disponible &agrave; partir de la version 2.4.57 du serveur HTTP
 Apache.</p>
 
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
@@ -207,7 +346,7 @@ correspondant aux drapeaux [B] ou [BCTLS]. Ils ne seront donc pas &eacute;chapp&
 RewriteRule "^search/(.*)$" "/search.php?term=$1" "[B,BNE=/]"</pre>
 
  
-<p>Ce drapeau est disponible &agrave; partir de la version 2.5.1 du serveur HTTP
+<p>Ce drapeau est disponible &agrave; partir de la version 2.4.57 du serveur HTTP
 Apache.</p>
 
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
@@ -219,6 +358,18 @@ normalement et passe le contr&ocirc;le &agrave; la r&egrave;gle suivante. Par co
 elle ne s'applique pas, la r&egrave;gle suivante, ainsi que toutes les r&egrave;gles
 cha&icirc;n&eacute;es qui suivent, seront saut&eacute;es.</p>
 
+<pre class="prettyprint lang-config"># R&eacute;&eacute;crire les URLs des anciens produits vers la nouvelle application du
+# catalogue, et ajouter un param&egrave;tre de tra&ccedil;age &mdash;&nbsp;mais seulement pour ceux qui
+# sont r&eacute;&eacute;crits.
+RewriteRule "^/products/([0-9]+)$" "/catalog/item/$1" [C]
+RewriteRule "^/catalog/(.*)$" "/catalog/$1?via=legacy" [QSA]</pre>
+
+
+<p>Sans le drapeau [C], la seconde r&egrave;gle s&rsquo;appliquerait aux requ&ecirc;tes qui
+arrivent directement &agrave; <code>/catalog/</code>. Le cha&icirc;nage des deux r&egrave;gles
+permet de s&rsquo;assurer que la seconde r&egrave;gle ne s&rsquo;appliquera que si la premi&egrave;re
+s&rsquo;applique.</p>
+
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="flag_co">CO|cookie <a title="Lien permanent" href="#flag_co" class="permalink">&para;</a></h2>
@@ -262,7 +413,7 @@ ce style de cookie est interdit par le mod&egrave;le de s&eacute;curit&eacute; d
 <dl>
 <dt>Lifetime</dt>
 <dd>La dur&eacute;e de vie du cookie, en minutes.</dd>
-<dd>Une valeur de 0 indique une dur&eacute;e de vie correspondant &agrave; la session
+<dd>Une valeur de 0 indique une dur&eacute;e de vie correspondant &agrave; lasession
 courante du navigateur. Il s'agit de la valeur par d&eacute;faut.</dd>
 <dd>Une valeur n&eacute;gative indique que la d&eacute;finition du cookie doit &ecirc;tre annul&eacute;e
 dans le navigateur.</dd>
@@ -311,24 +462,26 @@ pour tous les URIs.</p>
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="flag_dpi">DPI|discardpath <a title="Lien permanent" href="#flag_dpi" class="permalink">&para;</a></h2>
-<p>Avec le drapeau DPI, la partie PATH_INFO de l'URI
-r&eacute;&eacute;crit est supprim&eacute;e.</p>
-<p>Ce drapeau est disponible dans les versions 2.2.12 et sup&eacute;rieures.</p>
-<p>Dans un contexte de r&eacute;pertoire, l'URI mis en comparaison par chaque
-r&egrave;gle <code class="directive">RewriteRule</code> est la concat&eacute;nation des
-valeurs courantes de l'URI et de PATH_INFO.</p>
-
-<p>L'URI courant peut &ecirc;tre l'URI initial tel qu'il a &eacute;t&eacute; fourni par le
+<p>Avec le drapeau DPI, la partie <a class="glossarylink" href="../glossary.html#pathinfo" title="voir glossaire">PATH_INFO</a>
+qui a &eacute;t&eacute; ajout&eacute;e au <a class="glossarylink" href="../glossary.html#urlpath" title="voir glossaire">chemin d&rsquo;URL</a> r&eacute;&eacute;crit est
+supprim&eacute;e.</p>
+
+<p>Dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de r&eacute;pertoire</a>, le
+<a class="glossarylink" href="../glossary.html#urlpath" title="voir glossaire">chemin d&rsquo;URL</a> que compare chaque
+<code class="directive">RewriteRule</code> est la concat&eacute;nation des valeurs courantes du
+chemin d&rsquo;URL et de PATH_INFO.</p>
+
+<p>Le chemin d&rsquo;URL actuel peut &ecirc;tre le chemin initial tel qu'il a &eacute;t&eacute; fourni par le
 client, le r&eacute;sultat d'une passe pr&eacute;c&eacute;dente du processus de r&eacute;&eacute;criture,
-ou le r&eacute;sultat de la r&egrave;gle pr&eacute;c&eacute;dente dans le processus courant de
+ou le r&eacute;sultat de la r&egrave;gle pr&eacute;c&eacute;dente de la passe actuelle du processus de
 r&eacute;&eacute;criture.</p>
 
-<p>Par contre, la partie PATH_INFO ajout&eacute;e &agrave; l'URI avant chaque r&egrave;gle ne
-refl&egrave;te que la valeur de PATH_INFO avant la passe courante du processus
-de r&eacute;&eacute;criture. En cons&eacute;quence, si de larges portions de l'URI
-correspondent et sont traduites via plusieurs directives
+<p>Par contre, la partie PATH_INFO ajout&eacute;e au chemin d&rsquo;URL avant chaque r&egrave;gle ne
+refl&egrave;te que la valeur de PATH_INFO avant la passe actuelle du processus
+de r&eacute;&eacute;criture. En cons&eacute;quence, si de larges portions du chemin d&rsquo;URL
+correspondent et sont copi&eacute;es dans une substitution via plusieurs directives
 <code class="directive">RewriteRule</code>, sans prendre en compte
-quelles parties de l'URI provenaient du PATH_INFO courant, l'URI final
+quelles parties du chemin d&rsquo;URL provenaient du PATH_INFO actuel, le chemin d&rsquo;URL final
 pourra se voir ajouter plusieurs copies de PATH_INFO.</p>
 
 <p>Utilisez ce drapeau pour toute substitution o&ugrave; la pr&eacute;sence du PATH_INFO qui
@@ -339,6 +492,17 @@ d&eacute;bute est oubli&eacute;. PATH_INFO ne sera pas recalcul&eacute; tant que
 courante du processus de r&eacute;&eacute;criture ne sera pas achev&eacute;e. Les r&egrave;gles
 suivantes de cette passe ne verront que le r&eacute;sultat direct des
 substitutions, sans aucun PATH_INFO ajout&eacute;.</p>
+
+<pre class="prettyprint lang-config"># Requ&ecirc;te&nbsp;: /app/script.php/extra/path (PATH_INFO contient /extra/path)
+# Sans le drapeau DPI, la substitution serait "script.php/extra/path" et
+# pourrait par accident copier PATH_INFO dans le r&eacute;sultat.
+RewriteRule "^script\.php(.*)$" "/new-app/handler$1" [DPI]</pre>
+
+
+<p>Le drapeau DPI supprime <code>/extra/path</code>, de sorte que seul le
+r&eacute;sultat de la substitution est transmis aux r&egrave;gles suivantes ou &agrave; la requ&ecirc;te
+finale.</p>
+
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="flag_e">E|env <a title="Lien permanent" href="#flag_e" class="permalink">&para;</a></h2>
@@ -379,7 +543,7 @@ comme les programmes CGI, d'autres directives RewriteRule, ou des
 directives CustomLog.</p>
 
 <p>L'exemple suivant d&eacute;finit une variable d'environnement nomm&eacute;e 'image'
-avec une valeur de '1' si l'URI de la requ&ecirc;te correspond &agrave; un fichier
+avec une valeur de '1' si le chemin d&rsquo;URL de la requ&ecirc;te correspond &agrave; un fichier
 image. Cette variable d'environnement est ensuite utilis&eacute;e pour exclure
 une telle requ&ecirc;te du journal des acc&egrave;s.</p>
 
@@ -390,16 +554,83 @@ CustomLog "logs/access_log" combined env=!image</pre>
 <p>Notez que le m&ecirc;me effet peut &ecirc;tre obtenu &agrave; l'aide de la directive
 <code class="directive"><a href="../mod/mod_setenvif.html#setenvif">SetEnvIf</a></code>. Cette technique
 est pr&eacute;sent&eacute;e &agrave; titre d'exemple et non de recommandation.</p>
+
+
+<p><strong>D&eacute;finir des variables d&rsquo;environnement pour tracer les r&eacute;&eacute;critures</strong></p>
+
+<p>Parfois, nous souhaitons &ecirc;tre au courant de l&rsquo;&eacute;tat de la situation lorsque
+nous effectuons une r&eacute;&eacute;criture. Par exemple, vous voudriez prendre note
+que vous avez effectu&eacute; cette r&eacute;&eacute;criture, de sorte que vous pourriez
+ult&eacute;rieurement voir si une requ&ecirc;te est arriv&eacute;e par l&rsquo;interm&eacute;daire de cette
+r&eacute;&eacute;criture. Une solution pour y parvenir est la d&eacute;finition d&rsquo;une variable
+d&rsquo;environnement.</p>
+
+<pre class="prettyprint lang-config">RewriteEngine on
+RewriteRule   "^/horse/(.*)"   "/pony/$1" [E=<strong>rewritten:1</strong>]</pre>
+
+
+<p>Dans la suite de votre jeu de r&egrave;gles, vous pouvez consulter cette variable
+d&rsquo;environnement en utilisant une RewriteCond&nbsp;:</p>
+
+<pre class="prettyprint lang-config">RewriteCond "%{ENV:rewritten}"  =1</pre>
+
+
+<p>Notez que les variables d&rsquo;environnements ne survivent pas &agrave; une redirection
+externe. Vous devez alors utiliser le drapeau [CO] pour d&eacute;finir un cookie.</p>
+
+    <div class="note"><h3>Pr&eacute;fixe REDIRECT_ apr&egrave;s une redirection interne</h3>
+    <p>Dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de r&eacute;pertoire</a>,
+    une substitution r&eacute;ussie d&eacute;clenche une redirection interne. Lorsque cela se
+    produit, toutes les variables d&rsquo;environnement d&eacute;finies au cours de la passe
+    pr&eacute;c&eacute;dente &mdash;&nbsp;y compris celles cr&eacute;&eacute;es avec <code>[E=VAR:VAL]</code> &mdash;&nbsp;sont
+    renomm&eacute;es par l&rsquo;ajout du pr&eacute;fixe <code>REDIRECT_</code>. Une variable que
+    vous avez nomm&eacute;e <code>rewritten</code> devient ainsi
+    <code>REDIRECT_rewritten</code> dans la requ&ecirc;te redirig&eacute;e.</p>
+
+    <p>Pour tester la variable renomm&eacute;e, r&eacute;f&eacute;rencez-la avec le pr&eacute;fixe&nbsp;:</p>
+    </div>
+
+<pre class="prettyprint lang-config">RewriteRule   "^/horses/(.*)" "/ponies/$1" [E=rewritten:1]
+
+# &Agrave; la passe suivante, la variable a &eacute;t&eacute; renomm&eacute;e&nbsp;:
+RewriteCond "%{ENV:REDIRECT_rewritten}" =1
+RewriteRule "^/ponies/(.*)" "-" [E=seen_redirect:1,L]</pre>
+
+
+    <p>Si la requ&ecirc;te est redirig&eacute;e plusieurs fois, le pr&eacute;fixe est empil&eacute;&nbsp;:
+    <code>REDIRECT_REDIRECT_rewritten</code>, et ainsi de suite. Voir <a href="../env.html#redirect-vars">Variables REDIRECT_</a> pour la description
+    compl&egrave;te de ce m&eacute;canisme.</p>
+
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="flag_end">END <a title="Lien permanent" href="#flag_end" class="permalink">&para;</a></h2>
 <p>L'utilisation du drapeau [END] permet non seulement de terminer le
 processus de r&eacute;&eacute;criture en cours (comme [L]), mais aussi d'emp&ecirc;cher tout
-processus de r&eacute;&eacute;criture ult&eacute;rieur dans un contexte de r&eacute;pertoire
-(htaccess).</p>
+processus de r&eacute;&eacute;criture ult&eacute;rieur dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte
+de r&eacute;pertoire</a>, ce qui en fait le drapeau pr&eacute;f&eacute;r&eacute; pour la plupart des
+r&egrave;gles de niveau r&eacute;pertoire.</p>
+
+<p>Dans un contexte de serveur virtuel ou global, [END] et [L] se comportent de
+mani&egrave;re identique. La diff&eacute;rence entre les deux se situe dans un contexte de
+r&eacute;pertoire o&ugrave; [L] interrompt la passe actuelle, mais o&ugrave; le jeu de r&egrave;gles est &agrave;
+nouveau appliqu&eacute; &agrave; l&rsquo;URL r&eacute;&eacute;crit. Cela peut provoquer des boucles infinies.
+[END] emp&ecirc;che tout processus de r&eacute;&eacute;criture ult&eacute;rieur en interrompant le cycle.</p>
+
+<pre class="prettyprint lang-config"># Dans .htaccess&nbsp;: routage de toutes les requ&ecirc;tes vers un contr&ocirc;leur frontal
+# ici, [L] proquerait une boucle infine, pas [END]
+RewriteCond "%{REQUEST_FILENAME}" !-f
+RewriteCond "%{REQUEST_FILENAME}" !-d
+RewriteRule "^(.*)$" "/index.php" [END]</pre>
+
 
 <p>Ceci ne s'applique pas aux nouvelles requ&ecirc;tes r&eacute;sultant d'une
 redirection externe.</p>
+
+<p>Voir la discussion <a href="htaccess.html#loops">R&eacute;&eacute;critures dans un contexte
+de r&eacute;pertoire</a> pour une explication d&eacute;taill&eacute;e de la raison pour laquelle [L]
+se comporte diff&eacute;remment dans un contexte de r&eacute;pertoire, et des cas o&ugrave; [END]
+constitue le bon choix.</p>
+
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="flag_f">F|forbidden <a title="Lien permanent" href="#flag_f" class="permalink">&para;</a></h2>
@@ -415,9 +646,9 @@ Forbidden.</p>
 <pre class="prettyprint lang-config">RewriteRule "\.exe" "-" [F]</pre>
 
 
-<p>Cet exemple utilise la syntaxe "-" pour la cible de r&eacute;&eacute;criture, ce
-qui signifie que l'URI de la requ&ecirc;te n'est pas modifi&eacute;. Il n'y a aucune
-raison de r&eacute;&eacute;crire un URI, si vous avez l'intention d'interdire la
+<p>Cet exemple utilise la syntaxe "-" pour la cible de r&eacute;&eacute;criture, ce qui
+signifie que le chemin d&rsquo;URL de la requ&ecirc;te n'est pas modifi&eacute;. Il n'y a aucune
+raison de r&eacute;&eacute;crire un chemin d&rsquo;URL, si vous avez l'intention d'interdire la
 requ&ecirc;te.</p>
 
 <p>Lorsqu'on utilise [F], [L] est implicite - c'est &agrave; dire que la
@@ -484,30 +715,11 @@ trait&eacute;e. Ce drapeau correspond &agrave; la commande Perl <code>last</code
 que la r&egrave;gle courante doit &ecirc;tre appliqu&eacute;e imm&eacute;diatement, sans tenir
 compte des r&egrave;gles ult&eacute;rieures.</p>
 
-<p>Si vous utilisez des r&egrave;gles <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> dans des fichiers
-<code>.htaccess</code> ou des sections <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>, il est important d'avoir quelques
-notions sur la mani&egrave;re dont les r&egrave;gles sont trait&eacute;es. Pour simplifier,
-une fois les r&egrave;gles trait&eacute;es, la requ&ecirc;te r&eacute;&eacute;crite est pass&eacute;e &agrave; nouveau
-au moteur d'interpr&eacute;tation des URLs afin que ce dernier puisse la
-traiter. Il est possible qu'au cours du traitement de la requ&ecirc;te
-r&eacute;&eacute;crite, le fichier <code>.htaccess</code> ou la section <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> soient &agrave; nouveau
-rencontr&eacute;s, entra&icirc;nant un nouveau traitement du jeu de r&egrave;gles depuis le
-d&eacute;but. Cette situation se pr&eacute;sente le plus souvent lorsqu'une des r&egrave;gles
-provoque une redirection - interne ou externe - ce qui r&eacute;initialise le
-traitement de la requ&ecirc;te.</p>
-
-<p>Si vous utilisez des directives <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> dans un de ces contextes,
-il importe par cons&eacute;quent de pr&eacute;voir explicitement des &eacute;tapes permettant
-d'&eacute;viter un bouclage infini sur les r&egrave;gles,
-et de ne pas compter seulement sur
-le drapeau [L] pour terminer l'ex&eacute;cution d'une s&eacute;rie de r&egrave;gles, comme
-d&eacute;crit ci-dessous.</p>
-
-<p>Un autre drapeau, [END], permet non seulement d'interrompre le cycle
-courant du processus de r&eacute;&eacute;criture, mais aussi d'emp&ecirc;cher toute
-r&eacute;&eacute;criture ult&eacute;rieure dans le contexte de r&eacute;pertoire (htaccess). Ceci ne
-s'applique pas aux nouvelles requ&ecirc;tes r&eacute;sultant de redirections
-externes.</p>
+<p>Dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de r&eacute;pertoire</a>, [L]
+arr&ecirc;te la passe actuelle du jeu de r&egrave;gles, mais la requ&ecirc;te r&eacute;&eacute;crite peut &ecirc;tre
+trait&eacute;e &agrave; nouveau depuis le d&eacute;but du jeu de r&egrave;gles &mdash;&nbsp;ce qui peut provoquer des
+boucles infinies. Pour &eacute;viter ce probl&egrave;me, utilisez le drapeau <a href="#flag_end">[END]</a>, ou consultez le document <a href="htaccess.html#loops">R&eacute;&eacute;critures au niveau r&eacute;pertoire</a> pour une
+description d&eacute;taill&eacute;e du probl&egrave;me et des solutions alternatives.</p>
 
 <p>Dans l'exemple donn&eacute; ici, toute requ&ecirc;te est r&eacute;&eacute;crite en
 <code>index.php</code>, la requ&ecirc;te originale &eacute;tant ajout&eacute;e comme cha&icirc;ne
@@ -540,7 +752,7 @@ ceci jusqu'il n'y ait plus de A &agrave; remplacer.
 
 <p>Vous pouvez vous repr&eacute;senter ce traitement comme une boucle
 <code>while</code> : tant que le mod&egrave;le de la r&egrave;gle correspond (c'est &agrave;
-dire, tant que l'URI contient un <code>A</code>),
+dire, tant que le chemin d&rsquo;URL contient un <code>A</code>),
 effectuer la substitution (c'est &agrave; dire, remplacer le <code>A</code> par
 un <code>B</code>).</p>
 
@@ -558,7 +770,7 @@ RewriteRule "(.+)[&gt;&lt;;]$" "$1" [N=10]</pre>
 <h2 id="flag_nc">NC|nocase <a title="Lien permanent" href="#flag_nc" class="permalink">&para;</a></h2>
 <p>Avec le drapeau [NC], le mod&egrave;le de la r&egrave;gle <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> est compar&eacute; &agrave; la requ&ecirc;te de
 mani&egrave;re insensible &agrave; la casse. C'est &agrave; dire que cette comparaison
-s'effectue sans tenir compte des majuscules/minuscules dans l'URI
+s'effectue sans tenir compte des majuscules/minuscules dans le chemin URL
 compar&eacute;.</p>
 
 <p>Dans l'exemple suivant, toute requ&ecirc;te pour un fichier image sera
@@ -600,6 +812,10 @@ aurait &eacute;t&eacute; converti en son &eacute;quivalent hexad&eacute;cimal, <
 qui aurait provoqu&eacute; un code d'erreur "404 Not Found".
 </p>
 
+<p>Voir <a href="tech.html#encoding">Encodage et d&eacute;codage des URLs</a> pour une
+description compl&egrave;te de la mani&egrave;re dont httpd encode et d&eacute;code les URLs lors de
+la r&eacute;&eacute;criture.</p>
+
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="flag_ns">NS|nosubreq <a title="Lien permanent" href="#flag_ns" class="permalink">&para;</a></h2>
@@ -627,6 +843,14 @@ Les images, scripts java, ou fichiers css, charg&eacute;s en tant que partie
 d'une page html, ne sont pas des sous-requ&ecirc;tes - le navigateur les
 appelle sous forme de requ&ecirc;tes HTTP &agrave; part enti&egrave;re.
 </p>
+
+<pre class="prettyprint lang-config"># Ne r&eacute;&eacute;crire que les requ&ecirc;tes directes vers le contr&ocirc;leur frontal, pas les
+# sous-requ&ecirc;tes des inclusions SSI ou de mod_dir.
+RewriteCond "%{REQUEST_FILENAME}" !-f
+RewriteCond "%{REQUEST_FILENAME}" !-d
+RewriteRule "^(.*)$" "/app/index.php?page=$1" [NS,L]</pre>
+
+
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="flag_p">P|proxy <a title="Lien permanent" href="#flag_p" class="permalink">&para;</a></h2>
@@ -644,7 +868,7 @@ autrement dit, la requ&ecirc;te est imm&eacute;diatement envoy&eacute;e au manda
 toute r&egrave;gle ult&eacute;rieure sera ignor&eacute;e.</p>
 
 <p>
-Vous devez vous assurer que la cha&icirc;ne de substitution soit un URI valide
+Vous devez vous assurer que la cha&icirc;ne de substitution soit un URL valide
 (commen&ccedil;ant typiquement par <code>http://</code><em>nom-serveur</em>)
 qui puisse &ecirc;tre trait&eacute;e par le module <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>. Dans
 le cas contraire, le module mandataire vous renverra une erreur.
@@ -655,12 +879,17 @@ local.</p>
 
 <div class="warning">
       <h3>Avertissement &agrave; propos de la s&eacute;curit&eacute;</h3>
-      <p>Lors de la construction de l'URL cible de la r&egrave;gle, il convient
-      de prendre en compte l'impact en mati&egrave;re de s&eacute;curit&eacute; qu'aura le
-      fait de permettre au client d'influencer le jeu d'URLs pour
-      lesquelles votre serveur agira en tant que mandataire.
-      Assurez-vous que la partie protocole://nom-serveur de l'URL soit
-      fixe, ou ne permette pas au client de l'influencer induement.</p>
+      <p>Lors de la construction de l'URL cible de la r&egrave;gle, il convient de
+      prendre en compte l'impact en mati&egrave;re de s&eacute;curit&eacute; qu'aura le fait de
+      permettre au client d'influencer le jeu d'URLs pour lesquelles votre
+      serveur agira en tant que mandataire. Si une partie de l&rsquo;URL cible est
+      d&eacute;riv&eacute;e de l&rsquo;entr&eacute;e de l&rsquo;utilisateur (r&eacute;f&eacute;rences arri&egrave;res, cha&icirc;nes de
+      param&egrave;tres, etc.), un attaquant pourra &ecirc;tre capable de faire que votre
+      serveur g&eacute;n&egrave;re des requ&ecirc;tes vers des h&ocirc;tes internes ou externes
+      arbitraires. Cette vuln&eacute;rabilit&eacute; est connue sous le nom de falsification
+      de requ&ecirc;te c&ocirc;t&eacute; serveur (Server-Side Request Forgery &mdash;&nbsp;SSRF). Assurez-vous
+      que la partie protocole://nom-serveur de l'URL soit fixe, ou ne permette
+      pas au client de l'influencer indument.</p>
 </div>
 
 <div class="warning">
@@ -687,7 +916,7 @@ utiliser ce drapeau.</p>
 <p>
 Par d&eacute;faut, la cible (ou cha&icirc;ne de substitution) d'une r&egrave;gle
 RewriteRule est sens&eacute;e &ecirc;tre un chemin de fichier. Avec le drapeau [PT],
-par contre, elle est trait&eacute;e comme un URI. Autrement dit, avec le
+par contre, elle est trait&eacute;e comme un chemin URL. Autrement dit, avec le
 drapeau [PT], le r&eacute;sultat de la r&egrave;gle  <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> est pass&eacute; &agrave; nouveau au
 syst&egrave;me de mise en correspondance des URLs avec le syst&egrave;me de fichiers,
 de fa&ccedil;on &agrave; ce que les syst&egrave;mes de mise en correspondance bas&eacute;s sur les
@@ -722,7 +951,7 @@ r&eacute;&eacute;crire vers <code>-</code>.</p>
 <div class="section">
 <h2 id="flag_qsa">QSA|qsappend <a title="Lien permanent" href="#flag_qsa" class="permalink">&para;</a></h2>
 <p>
-Quand l'URI de remplacement contient une cha&icirc;ne de requ&ecirc;te, le
+Quand l'URL de remplacement contient une cha&icirc;ne de requ&ecirc;te, le
 comportement par d&eacute;faut de la r&egrave;gle <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> est de supprimer la <code>
 query string</code> (il s'agit des param&egrave;tres &eacute;ventuellement pass&eacute;s dans l'URL apr&egrave;s le
 caract&egrave;re <code>?</code>, usuellement pour les formulaires trait&eacute;s par la
@@ -745,10 +974,10 @@ autrement dit, la cha&icirc;ne de requ&ecirc;te (<code>query string</code>) exis
 <div class="section">
 <h2 id="flag_qsd">QSD|qsdiscard <a title="Lien permanent" href="#flag_qsd" class="permalink">&para;</a></h2>
 <p>
-Lorsque l'URI de la requ&ecirc;te contient une cha&icirc;ne de param&egrave;tres, et si
+Lorsque l'URL de la requ&ecirc;te contient une cha&icirc;ne de param&egrave;tres, et si
 l'URI cible n'en contient pas, le comportement par d&eacute;faut de la
 directive <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> consiste &agrave; copier cette
-cha&icirc;ne de param&egrave;tres dans l'URI cible. Avec le drapeau [QSD], la cha&icirc;ne
+cha&icirc;ne de param&egrave;tres dans l'URL cible. Avec le drapeau [QSD], la cha&icirc;ne
 de param&egrave;tres est supprim&eacute;e.
 </p>
 
@@ -760,12 +989,18 @@ drapeau [QSD] qui l'emporte.
 </p>
 
 <p>
-Si l'URI cible poss&egrave;de une cha&icirc;ne de param&egrave;tres, le comportement par
+Si l'URL cible poss&egrave;de une cha&icirc;ne de param&egrave;tres, le comportement par
 d&eacute;faut sera respect&eacute; - c'est &agrave; dire que la cha&icirc;ne de param&egrave;tres
 originale sera supprim&eacute;e et remplac&eacute;e par la cha&icirc;ne de param&egrave;tres de
-l'URI cible.
+l'URL cible.
 </p>
 
+<pre class="prettyprint lang-config"># Redirection des anciens URLs &laquo;&nbsp;search&nbsp;&raquo; vers le nouveau chemin en supprimant
+# la cha&icirc;ne de param&egrave;tres. /search?q=term&amp;page=2 devient /find (cha&icirc;ne de
+# param&egrave;tres supprim&eacute;e)
+RewriteRule "^/search" "/find" [QSD,R=301,L]</pre>
+
+
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="flag_qsl">QSL|qslast <a title="Lien permanent" href="#flag_qsl" class="permalink">&para;</a></h2>
@@ -781,6 +1016,20 @@ points d'interrogation. Si aucune cha&icirc;ne de param&egrave;tre n'est pr&eacu
 substitution, il est alors possible d'ajouter un point d'interrogation &agrave; la fin
 et d'utiliser ce drapeau.</p>
 
+<p>Par exemple, si une application patrimoniale attend une cha&icirc;ne de param&egrave;tres
+qui contient elle-m&ecirc;me un point d&rsquo;interrogation&nbsp;:</p>
+
+<pre class="prettyprint lang-config"># Associe /lookup/foo?bar &agrave; /app?type=foo?bar
+# Sans [QSL], le premier ? dans la substitution couperait le chemin, en
+# produisant incorrectement /app avec la cha&icirc;ne de param&egrave;tres type=foo?bar.
+# Avec [QSL], le DERNIER ? est utilis&eacute; comme d&eacute;limiteur.
+RewriteRule "^/lookup/(.*)" "/app?type=$1" [QSL,PT]</pre>
+
+
+<p>Sans [QSL], la substitution <code>/app?type=foo?bar</code> serait coup&eacute;e au
+premier <code>?</code>, perdant de ce fait le point d&rsquo;interrogation litt&eacute;ral de
+la valeur.</p>
+
 <p>Ce drapeau est disponible &agrave; partir de la version 2.4.19 du serveur HTTP
 Apache.</p>
 
@@ -812,7 +1061,7 @@ codes de redirection en utilisant leurs noms symboliques :
 
 <p>
 Vous utiliserez presque toujours [R] en conjonction avec [L] (c'est &agrave;
-dire [R,L]), car employ&eacute; seul, le drapeau [R] pr&eacute;fixe l'URI avec
+dire [R,L]), car employ&eacute; seul, le drapeau [R] pr&eacute;fixe le chemin URL avec
 <code>http://cet-h&ocirc;te[:ce-port]</code>, mais passe ensuite cette adresse
 &agrave; la r&egrave;gle suivante, ce qui provoquera le plus souvent des
 avertissements 'Invalid URI in request'.
@@ -822,19 +1071,32 @@ avertissements 'Invalid URI in request'.
 sp&eacute;cification de HTTP. Utiliser un code d'&eacute;tat non reconnu provoquera une erreur
 500 et l'enregistrement d'un message dans le journal des erreurs.</p>
 
+<div class="warning"><h3>[R=4xx] ne sert pas la substitution</h3>
+<p>Lorsqu&rsquo;un code d&rsquo;&eacute;tat en dehors de l&rsquo;intervalle 300-399 est sp&eacute;cifi&eacute; (par
+exemple <code>[R=403]</code> ou <code>[R=410]</code>), la cha&icirc;ne de substitution
+est ignor&eacute;e. L&rsquo;URL que vous avez saisi comme cible n&rsquo;est pas servi au client. &Agrave;
+la place, httpd renvoie le code d&rsquo;&eacute;tat sp&eacute;cifi&eacute; et le traite de la mani&egrave;re
+habituelle pour les r&eacute;ponses d'erreur (entre autres tout <code class="directive"><a href="../mod/core.html#errordocument">ErrorDocument</a></code> configur&eacute;). Si vous souhaitez interdire
+l&rsquo;acc&egrave;s, les drapeaux <a href="#flag_f">[F]</a> et <a href="#flag_g">[G]</a>
+sont des solutions plus adapt&eacute;es pour exprimer la m&ecirc;me intention.</p>
+</div>
+
+<pre class="prettyprint lang-config"># Redirection des requ&ecirc;tes pour l&rsquo;ancien chemin de la documentation vers le
+# nouvel emplacement.
+RewriteRule "^/docs/(.*)$" "http://docs.example.com/$1" [R=301,L]</pre>
+
+
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="flag_s">S|skip <a title="Lien permanent" href="#flag_s" class="permalink">&para;</a></h2>
-<p>Le drapeau [S] sert &agrave; sauter des r&egrave;gles que vous ne voulez pas voir
-ex&eacute;cuter. La syntaxe du drapeau [S] est [S=<em>N</em>], o&ugrave;
-<em>N</em> correspond au nombre de r&egrave;gles &agrave; sauter (sous
-r&eacute;serve que la r&egrave;gle <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> corresponde et qu'au moins
-une condition <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>
-pr&eacute;alable soit v&eacute;rifi&eacute;e). 
-Ceci peut s'interpr&eacute;ter comme une instruction
-<code>goto</code>  dans votre jeu de r&egrave;gles de r&eacute;&eacute;criture. Dans
-l'exemple suivant, nous ne voulons ex&eacute;cuter la r&egrave;gle <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> que si l'URI demand&eacute; ne
-correspond pas &agrave; un fichier existant.</p>
+<p>Le drapeau [S] sert &agrave; sauter des r&egrave;gles que vous ne voulez pas voir ex&eacute;cuter.
+La syntaxe du drapeau [S] est [S=<em>N</em>], o&ugrave; <em>N</em> correspond au nombre
+de r&egrave;gles &agrave; sauter (sous r&eacute;serve que la r&egrave;gle <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> corresponde et qu'au moins une
+condition <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code> pr&eacute;alable soit
+v&eacute;rifi&eacute;e).  Ceci peut s'interpr&eacute;ter comme une instruction <code>goto</code>
+dans votre jeu de r&egrave;gles de r&eacute;&eacute;criture. Dans l'exemple suivant, nous ne voulons
+ex&eacute;cuter la r&egrave;gle <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> que si
+le chemin URL demand&eacute; ne correspond pas &agrave; un fichier existant.</p>
 <pre class="prettyprint lang-config"># La requ&ecirc;te concerne-t-elle un fichier qui n'existe pas ?
 RewriteCond "%{REQUEST_FILENAME}" !-f
 RewriteCond "%{REQUEST_FILENAME}" !-d
@@ -845,8 +1107,6 @@ RewriteRule "(.*\.gif)" "images.php?$1"
 RewriteRule "(.*\.html)" "docs.php?$1"</pre>
 
 
-
-
 <p>Cette technique trouve son utilit&eacute; dans le fait qu'une directive
 <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code> ne s'applique
 qu'&agrave; la r&egrave;gle qui la suit imm&eacute;diatement. Ainsi, si vous voulez
@@ -917,9 +1177,31 @@ utiliser le drapeau <code>L</code> pour terminer la s&eacute;quence
 <div class="section">
 <h2 id="flag_unsafe_allow_3f">UnsafeAllow3F <a title="Lien permanent" href="#flag_unsafe_allow_3f" class="permalink">&para;</a></h2>
     <p>Il est n&eacute;cessaire de d&eacute;finir ce drapeau pour permettre &agrave; une r&eacute;&eacute;criture
-    de continuer si la requ&ecirc;te HTTP en cours d'&eacute;criture poss&egrave;de un point d'interrogation encod&eacute;, &laquo;&nbsp;%3f&nbsp;&raquo;, et si le r&eacute;sultat r&eacute;&eacute;crit contient un &laquo;&nbsp;?&nbsp;&raquo; dans
-    la substitution. Cela prot&egrave;ge d'une URL malveillante tirant avantage d'une
-    capture et d'une resubstitution du point d'interrogation encod&eacute;.</p>
+    de continuer si la requ&ecirc;te HTTP en cours d'&eacute;criture poss&egrave;de un point
+    d'interrogation encod&eacute;, &laquo;&nbsp;%3f&nbsp;&raquo;, et si le r&eacute;sultat r&eacute;&eacute;crit
+    contient un &laquo;&nbsp;?&nbsp;&raquo; dans la substitution. Cela prot&egrave;ge d'une URL
+    malveillante tirant avantage d'une capture et d'une resubstitution du point
+    d'interrogation encod&eacute;.</p>
+
+<pre class="prettyprint lang-config"># Un contr&ocirc;leur frontal PHP qui route toutes les requ&ecirc;tes via un &eacute;l&eacute;ment de la
+# cha&icirc;ne de param&egrave;tres.
+# Sans UnsafeAllow3F, une requ&ecirc;te comme /page%3Fname=test renverrait 403 Forbidden,
+# car le substitution r&eacute;&eacute;crite contient '?' alors que la requ&ecirc;te originelle
+# contient un caract&egrave;re encod&eacute; '%3F'.
+RewriteCond "%{REQUEST_FILENAME}" !-f
+RewriteCond "%{REQUEST_FILENAME}" !-d
+RewriteRule "(.+)" "index.php?route=$1" [L,QSA,UnsafeAllow3F]</pre>
+
+
+<div class="warning">
+L&rsquo;existence de ce drapeau est due &agrave; <a href="https://www.cve.org/CVERecord?id=CVE-2024-38474">CVE-2024-38474</a>. Ne
+l&rsquo;utilisez que dans les r&egrave;gles pour lesquelles vous &ecirc;tes certain qu&rsquo;un
+<code>%3F</code> saisi par l&rsquo;utilisateur dans la requ&ecirc;te ne peut pas &ecirc;tre
+exploit&eacute; pour manipuler la cha&icirc;ne de param&egrave;tres de la cible de substitution.
+Pr&eacute;f&eacute;rez autant que possible la restructuration des URLs pour &eacute;viter les points
+d&rsquo;interrogation encod&eacute;s.
+</div>
+
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="flag_unsafe_prefix_stat">UnsafePrefixStat <a title="Lien permanent" href="#flag_unsafe_prefix_stat" class="permalink">&para;</a></h2>
@@ -927,11 +1209,29 @@ utiliser le drapeau <code>L</code> pour terminer la s&eacute;quence
     l'&eacute;chelle du serveur qui commencent par une variable ou une r&eacute;f&eacute;rence
     arri&egrave;re et se r&eacute;solvent en un chemin du syst&egrave;me de fichiers. Ces
     substitutions ne sont pas pr&eacute;fix&eacute;es par la racine des documents. Cela prot&egrave;ge
-    d'une URL malveillante faisant correspondre la substitution expans&eacute;e &agrave; un
+    d'un URL malveillant faisant correspondre la substitution d&eacute;velopp&eacute;e &agrave; un
     emplacement non souhait&eacute; du syst&egrave;me de fichiers.</p>
 
     <p>Disponible &agrave; partir de la version 2.5.1 du serveur HTTP Apache.</p>
- </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+
+<pre class="prettyprint lang-config"># Cette r&egrave;gle lance la substitution avec une r&eacute;f&eacute;rence arri&egrave;re.
+# Depuis la version 2.4.60, cette op&eacute;ration est rejet&eacute;e par d&eacute;faut pour emp&ecirc;cher
+# le chemin d&eacute;velopp&eacute; de s&rsquo;&eacute;chapper de la racine des documents (CVE-2024-38475).
+# N&rsquo;ajoutez UnsafePrefixStat qu&rsquo;apr&egrave;s avoir v&eacute;rifi&eacute; que la substitution ne peut
+# pas se r&eacute;soudre en un chemin du syst&egrave;me de fichiers en dehors de la racine des
+# documents de votre site.
+RewriteRule "^/mirror/(.+)$" "$1" [PT,UnsafePrefixStat]</pre>
+
+
+<div class="warning">
+L&rsquo;existence de ce drapeau est due &agrave; <a href="https://www.cve.org/CVERecord?id=CVE-2024-38475">CVE-2024-38475</a>. Sans
+lui, une substitution commen&ccedil;ant par une r&eacute;f&eacute;rence arri&egrave;re ou une variable qui
+correspond &agrave; un chemin existant du syst&egrave;me de fichiers pourrait permettre &agrave; des
+requ&ecirc;tes de s&rsquo;&eacute;chapper de la racine des documents. N&rsquo;utilisez ce drapeau
+qu&rsquo;apr&egrave;s avoir confirm&eacute; que la substitution est contrainte de mani&egrave;re ad&eacute;quate.
+</div>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="flag_unc">UNC <a title="Lien permanent" href="#flag_unc" class="permalink">&para;</a></h2>
     <p>D&eacute;finir ce drapeau emp&ecirc;che la fusion des slashes de d&eacute;but multiples tels
@@ -940,6 +1240,21 @@ utiliser le drapeau <code>L</code> pour terminer la s&eacute;quence
     multiples litt&eacute;raux.</p>
 
     <p>Disponible &agrave; partir de la version 2.5.1 du serveur HTTP Apache.</p>
+
+<pre class="prettyprint lang-config"># Sous Windows, r&eacute;&eacute;criture vers un partage de fichiers UNC
+# en utilisant une variable
+# Sans [UNC], les barres obliques de t&ecirc;te dans la substitution seraient
+# fusionn&eacute;es (//server/share deviendrait /server/share).
+RewriteCond "%{HTTP_HOST}" "^(.+)\.internal$"
+RewriteRule "^/shared/(.*)$" "//%1/fileshare/$1" [UNC]</pre>
+
+
+<p>Ce drapeau n&rsquo;est pertinent que sous Windows. Il emp&ecirc;che httpd de fusionner
+les doubles barres obliques de t&ecirc;te (<code>//</code>) qui sont pr&eacute;sentes dans un
+chemin UNC lorsque ce dernier a &eacute;t&eacute; construit &agrave; partir d&rsquo;une r&eacute;f&eacute;rence arri&egrave;re
+ou d&rsquo;une variable. Si la substitution commence par des doubles barres obliques
+litt&eacute;rales, aucun drapeau n&rsquo;est n&eacute;cessaire.</p>
+
 </div></div>
 <div class="bottomlang">
 <p><span>Langues Disponibles: </span><a href="../de/rewrite/flags.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
index 8a295bb16f6ead294a86bd07c0bce8e0f6685209..5e5fcb10d9edc83ef2d29e92518c3be61eb59241 100644 (file)
@@ -10,7 +10,7 @@
     <variant outdated="yes">de</variant>
     <variant>en</variant>
     <variant outdated="yes">es</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
     <variant outdated="yes">ja</variant>
     <variant outdated="yes">ko</variant>
     <variant outdated="yes">tr</variant>
index 0a9f65e009f1f80e426511c333f188093ce23b72..755c036e89abf4cacb2beaab15415700be25ff4d 100644 (file)
@@ -6,7 +6,7 @@
               This file is generated from xml source: DO NOT EDIT
         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
       -->
-<title>mod_rewrite et les fichiers .htaccess - Serveur HTTP Apache Version 2.5</title>
+<title>R&eacute;&eacute;critures au niveau r&eacute;pertoire - Serveur HTTP Apache Version 2.5</title>
 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet">
 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size">
 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css"><link rel="stylesheet" type="text/css" href="../style/css/prettify.css">
@@ -20,7 +20,7 @@
 <img alt="" src="../images/feather.png"></div>
 <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif"></a></div>
 <div id="path">
-<a href="https://www.apache.org/">Apache</a> &gt; <a href="https://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="https://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Rewrite</a></div><div id="page-content"><div id="preamble"><h1>mod_rewrite et les fichiers .htaccess</h1>
+<a href="https://www.apache.org/">Apache</a> &gt; <a href="https://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="https://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Rewrite</a></div><div id="page-content"><div id="preamble"><h1>R&eacute;&eacute;critures au niveau r&eacute;pertoire</h1>
 <button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button>
 <div class="toplang">
 <p><span>Langues Disponibles: </span><a href="../de/rewrite/htaccess.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
 <a href="../tr/rewrite/htaccess.html" hreflang="tr" rel="alternate" title="T&uuml;rk&ccedil;e">&nbsp;tr&nbsp;</a> |
 <a href="../zh-cn/rewrite/htaccess.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese">&nbsp;zh-cn&nbsp;</a></p>
 </div>
-<div class="outofdate">Cette traduction peut &ecirc;tre p&eacute;rim&eacute;e. V&eacute;rifiez la version
-            anglaise pour les changements r&eacute;cents.</div>
 
 
-<p>Ce document est un compl&eacute;ment de la <a href="../mod/mod_rewrite.html">documentation de r&eacute;f&eacute;rence</a> du module
-<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>. Il d&eacute;crit les changements apport&eacute;s aux r&egrave;gles
-lorsqu'on utilise <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> dans les fichiers .htaccess, et
-comment travailler avec ces changements.</p>
+<p>Utiliser <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> dans les fichiers
+<code>.htaccess</code> est une des configurations dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de r&eacute;pertoire</a> les plus courantes &mdash;&nbsp;et les
+plus sujettes &agrave; confusion. Ce document expose les principales diff&eacute;rences entre
+l&rsquo;utilisation de r&egrave;gles de r&eacute;&eacute;criture dans un contexte global au serveur et leur
+utilisation dans les fichiers <code>.htaccess</code>, et fournit un guide
+pratique pour &eacute;viter les pi&egrave;ges les plus courants.</p>
+
+<p>Pour des d&eacute;tails techniques de bas niveau &agrave; propos de la mani&egrave;re dont
+<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> traite les r&egrave;gles dans un contexte de r&eacute;pertoire,
+voir le document <a href="tech.html#InternalAPI">D&eacute;tails techniques</a>.</p>
 
 </div>
-<div id="quickview"><h3>Voir aussi</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Documentation du module mod_rewrite</a></li><li><a href="intro.html">Introduction &agrave; mod_rewrite</a></li><li><a href="remapping.html">Redirection et remise en
-correspondance</a></li><li><a href="vhosts.html">Serveurs virtuels</a></li><li><a href="proxy.html">Serveurs mandataires</a></li><li><a href="rewritemap.html">Utilisation de RewriteMap</a></li><li><a href="advanced.html">Techniques avanc&eacute;es</a></li><li><a href="avoid.html">Quand ne pas utiliser mod_rewrite</a></li></ul></div>
+<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif"> <a href="#prerequisites">Pr&eacute;requis&nbsp;: AllowOverride</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#path-stripping">Quel URL la r&egrave;gle voit-elle&nbsp;?</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#rewritebase">Quand avez-vous besoin de RewriteBase&nbsp;?</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#loops">Le drapeau [L] et les boucles infinies</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#rewritemap-restriction">RewriteMap ne peut pas &ecirc;tre d&eacute;clar&eacute;e
+dans un fichier .htaccess</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#context-restrictions">Quels contextes peuvent accueillir des
+r&egrave;gles de r&eacute;&eacute;criture&nbsp;?</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#inheritance">H&eacute;ritage des r&egrave;gles avec RewriteOptions</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#debugging">D&eacute;bogage des r&egrave;gles de r&eacute;&eacute;criture dans les
+fichiers .htaccess</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#caching">Mise en cache des &laquo;&nbsp;301 redirects&nbsp;&raquo; au niveau du
+navigateur</a></li>
+</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Documentation du module mod_rewrite</a></li><li><a href="intro.html">Introduction &agrave; mod_rewrite</a></li><li><a href="remapping.html">Redirection et remise en
+correspondance</a></li><li><a href="vhosts.html">Serveurs virtuels</a></li><li><a href="rewritemap.html">Utilisation de RewriteMap</a></li><li><a href="avoid.html">Quand ne pas utiliser mod_rewrite</a></li><li><a href="flags.html">Drapeaux de RewriteRule</a></li><li><a href="tech.html">D&eacute;tails techniques</a></li><li><a href="../mod/mod_rewrite.html#what_is_matched">Qu&rsquo;est-ce qui est
+compar&eacute;&nbsp;?</a></li></ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="prerequisites">Pr&eacute;requis&nbsp;: AllowOverride <a title="Lien permanent" href="#prerequisites" class="permalink">&para;</a></h2>
+
+<p>Pour que des directives de <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> dans un fichier
+<code>.htaccess</code> puissent &ecirc;tre trait&eacute;es, la configuration du serveur doit
+tout d&rsquo;abord les autoriser de la mani&egrave;re suivante&nbsp;:</p>
+
+<pre class="prettyprint lang-config">&lt;Directory "/var/www/htdocs"&gt;
+    AllowOverride FileInfo
+&lt;/Directory&gt;</pre>
+
+
+<p>Si au minimum <code>AllowOverride FileInfo</code> (ou <code>AllowOverride
+All</code>) n&rsquo;est pas pr&eacute;sente, toute directive de <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
+dans les fichiers <code>.htaccess</code> sera silencieusement ignor&eacute;e. Si vos
+r&egrave;gles semblent ne pas fonctionner, il s&rsquo;agit de la premi&egrave;re chose &agrave; v&eacute;rifier.</p>
+
+<p>En outre, soit <code>Options FollowSymLinks</code>, soit <code>Options
+SymLinksIfOwnerMatch</code> doit &ecirc;tre activ&eacute;e pour le r&eacute;pertoire en question.
+Comme une r&egrave;gle <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> peut
+associer un URL &agrave; un chemin arbitraire du syst&egrave;me de fichiers
+&mdash;&nbsp;fonctionnellement &eacute;quivalent &agrave; un lien symbolique
+&mdash;&nbsp;<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> refusera d&rsquo;op&eacute;rer dans un contexte de r&eacute;pertoire
+si aucune de ces options n&rsquo;est d&eacute;finie. Vous verrez alors l&rsquo;erreur suivante&nbsp;:</p>
+
+<div class="example"><p><code>
+AH00670: Options FollowSymLinks and SymLinksIfOwnerMatch are both off,
+so the RewriteRule directive is also forbidden due to its similar
+ability to circumvent directory restrictions
+</code></p></div>
+
+<p>Cette restriction s&rsquo;applique aux fichiers <code>.htaccess</code> et aux
+sections <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="path-stripping">Quel URL la r&egrave;gle voit-elle&nbsp;? <a title="Lien permanent" href="#path-stripping" class="permalink">&para;</a></h2>
+
+<p>Dans un contexte de serveur virtuel ou global au serveur, le motif de la
+r&egrave;gle <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> est compar&eacute; &agrave;
+l&rsquo;ensemble du chemin d&rsquo;URL, en commen&ccedil;ant par une barre oblique. Dans un
+contexte de fichier <code>.htaccess</code>, le pr&eacute;fixe du r&eacute;pertoire est
+<strong>supprim&eacute;</strong>.</p>
+
+<p>Par exemple, si votre fichier <code>.htaccess</code> est dans
+<code>/var/www/htdocs/app/</code> et si une requ&ecirc;te arrive pour
+<code>/app/products/widget</code>, la r&egrave;gle RewriteRule ne voit que
+<code>products/widget</code> &mdash; pas de barre oblique en t&ecirc;te, pas de pr&eacute;fixe
+<code>/app/</code>.</p>
+
+<p class="figure">
+      <img src="../images/rewrite_path_stripping.png" alt="Organigramme montrant la suppression du chemin, la substitution    et le pipeline de RewriteBase dans un contexte de r&eacute;pertoire, avec    trois r&eacute;sultats&nbsp;: un chemin relatif (pr&eacute;fix&eacute; par RewriteBase), un    chemin absolu (utilis&eacute; tel quel) et un URI absolu (redirection    externe)"><br>
+      <dfn>Figure&nbsp;:</dfn> Suppression du chemin dans un contexte de r&eacute;pertoire
+      et pipeline de RewriteBase
+</p>
+
+<p>Cela signifie que vous devez &eacute;crire vos motifs diff&eacute;remment en fonction de
+l&rsquo;emplacement des r&egrave;gles&nbsp;:</p>
+
+    <table class="bordered">
+        <tr>
+            <th>Emplacement de la r&egrave;gle</th>
+            <th>R&egrave;gle</th>
+        </tr>
+        <tr>
+            <td>Section VirtualHost</td>
+            <td><code>RewriteRule "^/app/products/(.+)$" "/app/shop.php?item=$1"</code></td>
+        </tr>
+        <tr>
+            <td>.htaccess dans /var/www/htdocs/app/</td>
+            <td><code>RewriteRule "^products/(.+)$" "shop.php?item=$1"</code></td>
+        </tr>
+    </table>
+
+<p>Notez que la version pour <code>.htaccess</code> n&rsquo;a de barre oblique de t&ecirc;te
+ni dans le motif, ni dans la substitution. Il s&rsquo;agit de la source de confusion
+la plus courante avec la r&eacute;&eacute;criture dans un contexte de r&eacute;pertoire.</p>
+
+<p>Lorsqu&rsquo;une substitution est effectu&eacute;e dans un contexte de r&eacute;pertoire, httpd
+g&eacute;n&egrave;re une nouvelle sous-requ&ecirc;te interne avec l&rsquo;URL r&eacute;&eacute;crit en red&eacute;marrant le
+traitement de la requ&ecirc;te depuis le d&eacute;but. Si la substitution est un chemin
+relatif, la directive <code class="directive"><a href="../mod/mod_rewrite.html#rewritebase">RewriteBase</a></code>
+d&eacute;termine le pr&eacute;fixe &agrave; ajouter au chemin d&rsquo;URL. Ce m&eacute;canisme de sous-requ&ecirc;te
+peut aussi &ecirc;tre &agrave; l&rsquo;origine d&rsquo;un bouclage infini des r&egrave;gles &mdash; voir <a href="#loops">ci-apr&egrave;s</a>.</p>
+
+
+<div class="warning"><h3>Ne faites pas commencer vos motifs de .htaccess avec
+une barre oblique</h3>
+<p>&Eacute;tant donn&eacute; que le pr&eacute;fixe du r&eacute;pertoire (y compris la barre oblique de fin)
+est supprim&eacute; avant la mise en correspondance, les motifs dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de r&eacute;pertoire</a> ne correspondront
+<em>jamais</em> avec une adresse commen&ccedil;ant par une barre oblique. Un motif
+commen&ccedil;ant par <code>^/</code> ne correspondra jamais dans ce contexte. Une
+r&egrave;gle telle que <code>RewriteRule "^/foo" ...</code> plac&eacute;e dans un fichier
+<code>.htaccess</code> &eacute;chouera silencieusement &agrave; s&rsquo;appliquer &agrave; quelque requ&ecirc;te
+que ce soit.</p>
 </div>
+
+<p>Si vous devez faire une recherche de correspondance avec le chemin d&rsquo;URL
+original complet (y compris le pr&eacute;fixe de r&eacute;pertoire), utilisez
+<code>%{REQUEST_URI}</code> dans une directive <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>&nbsp;:</p>
+
+<pre class="prettyprint lang-config">RewriteCond "%{REQUEST_URI}" "^/admin/"
+RewriteRule "^.*$" "-" [F]</pre>
+
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="rewritebase">Quand avez-vous besoin de RewriteBase&nbsp;? <a title="Lien permanent" href="#rewritebase" class="permalink">&para;</a></h2>
+
+<p>Quand <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> effectue une substitution dans un fichier
+<code>.htaccess</code>, il doit retransformer le r&eacute;sultat relatif en un chemin
+d&rsquo;URL complet. La directive <code class="directive"><a href="../mod/mod_rewrite.html#rewritebase">RewriteBase</a></code> lui indique quel pr&eacute;fixe il doit
+ajouter.</p>
+
+<p>Par d&eacute;faut, <code class="directive"><a href="../mod/mod_rewrite.html#rewritebase">RewriteBase</a></code> est
+d&eacute;finie avec le chemin physique du fichier <code>.htaccess</code>. Dans la
+plupart des cas, cela correspond aux attentes, et vous n&rsquo;avez pas besoin de la
+d&eacute;finir explicitement. Il y a cependant des situations o&ugrave; vous devrez le faire&nbsp;:</p>
+
+<ul>
+<li><strong>Alias ou lien symbolique&nbsp;:</strong> Si le r&eacute;pertoire est atteint via
+une directive <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code> ou un lien
+symbolique, le chemin d&rsquo;URL et le chemin du syst&egrave;me de fichiers diff&egrave;rent, et la
+directive <code class="directive"><a href="../mod/mod_rewrite.html#rewritebase">RewriteBase</a></code> doit &ecirc;tre
+d&eacute;finie avec le chemin d&rsquo;URL.</li>
+
+<li><strong>Applications de sous-r&eacute;pertoire&nbsp;:</strong> Avec les cadriciels PHP,
+il est courant de placer un fichier <code>.htaccess</code> dans un
+sous-r&eacute;pertoire (par exemple <code>/var/www/htdocs/myapp/</code>) et de router
+toutes les requ&ecirc;tes vers un contr&ocirc;leur frontal&nbsp;:</li>
+</ul>
+
+<pre class="prettyprint lang-config"># Dans /var/www/htdocs/myapp/.htaccess
+RewriteEngine On
+RewriteBase "/myapp/"
+RewriteCond "%{REQUEST_FILENAME}" !-f
+RewriteCond "%{REQUEST_FILENAME}" !-d
+RewriteRule "^(.*)$" "index.php" [L]</pre>
+
+
+<div class="note">Dans ce cas particulier &mdash;&nbsp;routage de toutes les requ&ecirc;tes qui ne
+correspondent pas vers un contr&ocirc;leur frontal &mdash;&nbsp;la directive <a href="avoid.html#fallback-resource">FallbackResource</a> est une alternative &agrave;
+mod_rewrite plus simple et plus efficace.</div>
+
+<p>Sans la ligne <code>RewriteBase "/myapp/"</code>, l&rsquo;URL r&eacute;&eacute;crit risque de se
+r&eacute;soudre incorrectement, car <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> ajouterait comme
+pr&eacute;fixe le chemin du syst&egrave;me de fichiers au lieu du chemin d&rsquo;URL.</p>
+
+<p>Si vous utilisez des URLs absolus (commen&ccedil;ant par <code>/</code> ou
+<code>http://</code>) dans vos substitutions, <code class="directive"><a href="../mod/mod_rewrite.html#rewritebase">RewriteBase</a></code> n&rsquo;aura aucun effet, car elle ne
+s&rsquo;applique qu&rsquo;aux substitutions relatives.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="loops">Le drapeau [L] et les boucles infinies <a title="Lien permanent" href="#loops" class="permalink">&para;</a></h2>
+
+<p>Dans le contexte global du serveur, le drapeau <code>[L]</code> signifie
+&laquo;&nbsp;arr&ecirc;ter le traitement du jeu de r&egrave;gles&nbsp;&raquo;. Dans le contexte des fichiers
+<code>.htaccess</code>, il a une signification subtilement diff&eacute;rente&nbsp;:
+&laquo;&nbsp;arr&ecirc;ter le traitement du jeu de r&egrave;gles <em>pour cette passe</em>&nbsp;&raquo;. Une fois
+la substitution effectu&eacute;e, httpd traite &agrave; nouveau la requ&ecirc;te depuis le d&eacute;but du
+jeu de r&egrave;gles &mdash;&nbsp;tout en appliquant &agrave; nouveau les r&egrave;gles du fichier
+<code>.htaccess</code>. Cela peut provoquer des boucles infinies.</p>
+
+<p class="figure">
+      <img src="../images/rewrite_l_flag_looping.png" alt="Organigramme montrant la mani&egrave;re dont le drapeau [L] provoque une    boucle infinie dans un contexte de r&eacute;pertoire en d&eacute;clenchant une    sous-requ&ecirc;te qui r&eacute;ex&eacute;cute le jeu de r&egrave;gles"><br>
+      <dfn>Figure:</dfn> Risque de boucle infinie avec le drapeau [L] dans un
+      contexte de r&eacute;pertoire
+</p>
+
+<p>Consid&eacute;rez cette r&egrave;gle&nbsp;:</p>
+
+<pre class="prettyprint lang-config"># Dans .htaccess - risque de boucle infinie&nbsp;!
+RewriteRule "^(.*)$" "/index.php?q=$1" [L]</pre>
+
+
+<p>&Agrave; la premi&egrave;re passe, une requ&ecirc;te pour <code>/hello</code> est r&eacute;&eacute;crite en
+<code>/index.php?q=hello</code>. Puis la requ&ecirc;te est trait&eacute;e &agrave; nouveau, et
+l&agrave;, <code>index.php</code> correspond encore &agrave; <code>^(.*)$</code>, et la
+requ&ecirc;te est r&eacute;&eacute;crite en <code>/index.php?q=index.php</code>. Ce processus
+continue jusqu&rsquo;&agrave; ce que httpd atteigne sa limite de redirections internes et
+renvoie une erreur 500. Le message suivant sera alors enregistr&eacute; dans le journal
+des erreurs&nbsp;:</p>
+
+<div class="example"><p><code>
+AH00124: Request exceeded the limit of 10 internal redirects due to
+probable configuration error. Use 'LimitInternalRecursion' to increase
+the limit if necessary. Use 'LogLevel debug' to get a backtrace.
+</code></p></div>
+
+<p>Il existe plusieurs m&eacute;thodes pour interrompre la boucle infinie&nbsp;:</p>
+
+<p><strong>Option 1&nbsp;: utiliser le drapeau [END] (recommand&eacute;)</strong></p>
+
+<pre class="prettyprint lang-config">RewriteRule "^(.*)$" "/index.php?q=$1" [END]</pre>
+
+
+<p>Le drapeau <code>[END]</code> (disponible depuis la version 2.3.9 de httpd)
+arr&ecirc;te <em>tout</em> processus de r&eacute;&eacute;criture ult&eacute;rieur, y compris les passes
+suivantes. Il s&rsquo;agit de la m&eacute;thode la plus propre pour pr&eacute;venir les boucles
+infinies.</p>
+
+<p><strong>Option 2&nbsp;: ajouter une condition pour emp&ecirc;cher le traitement des URLs d&eacute;j&agrave; r&eacute;&eacute;crits</strong></p>
+
+<pre class="prettyprint lang-config">RewriteCond "%{REQUEST_FILENAME}" !-f
+RewriteCond "%{REQUEST_FILENAME}" !-d
+RewriteRule "^(.*)$" "/index.php?q=$1" [L]</pre>
+
+
+<p>&Eacute;tant donn&eacute; que <code>index.php</code> existe en tant que fichier, la
+condition <code>!-f</code> fait que la r&egrave;gle est saut&eacute;e &agrave; la seconde passe.</p>
+
+<p><strong>Option 3&nbsp;: v&eacute;rifier la variable THE_REQUEST</strong></p>
+
+<pre class="prettyprint lang-config">RewriteCond "%{THE_REQUEST}" "!index\.php"
+RewriteRule "^(.*)$" "/index.php?q=$1" [L]</pre>
+
+
+<p>La variable <code>%{THE_REQUEST}</code> contient la requ&ecirc;te originelle telle
+qu&rsquo;elle a &eacute;t&eacute; envoy&eacute;e par le client et non modifi&eacute;e par
+<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>. Sa v&eacute;rification emp&ecirc;che la r&egrave;gle de s&rsquo;appliquer aux
+URLs r&eacute;&eacute;crits.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="rewritemap-restriction">RewriteMap ne peut pas &ecirc;tre d&eacute;clar&eacute;e
+dans un fichier .htaccess <a title="Lien permanent" href="#rewritemap-restriction" class="permalink">&para;</a></h2>
+
+<p>La directive <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code> ne peut
+&ecirc;tre d&eacute;clar&eacute;e que dans un contexte de serveur virtuel ou global au serveur, pas
+dans les fichiers <code>.htaccess</code> ou les sections <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>. Cependant, lorsqu&rsquo;un mappage
+est d&eacute;clar&eacute; dans la configuration globale du serveur, vous <em>pouvez</em>
+l&rsquo;utiliser dans un fichier <code>.htaccess</code>&nbsp;:</p>
+
+<pre class="prettyprint lang-config"># Dans httpd.conf ou dans un VirtualHost
+RewriteMap product2id "txt:/etc/apache2/productmap.txt"</pre>
+
+
+<pre class="prettyprint lang-config"># Dans .htaccess - utilisation du mappage d&eacute;clar&eacute; ci-avant
+RewriteEngine On
+RewriteRule "^product/(.+)$" "/prods.php?id=${product2id:$1|NOTFOUND}" [PT]</pre>
+
+
+<p>Cette restriction existe, car les fichiers <code>.htaccess</code> sont
+analys&eacute;s pour chaque requ&ecirc;te, et la r&eacute;p&eacute;tition de l&rsquo;initialisation du mappage
+(en particulier pour les types de mappage <code>dbm:</code>, <code>dbd:</code>
+et <code>prg:</code>) serait d&rsquo;un co&ucirc;t prohibitif en ressources.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="context-restrictions">Quels contextes peuvent accueillir des
+r&egrave;gles de r&eacute;&eacute;criture&nbsp;? <a title="Lien permanent" href="#context-restrictions" class="permalink">&para;</a></h2>
+
+<p>Les r&egrave;gles de r&eacute;&eacute;criture&nbsp;sont prises en charge dans les <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contextes de r&eacute;pertoire</a> (fichiers <a href="../howto/htaccess.html">.htaccess</a> et sections <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> et <code class="directive"><a href="../mod/core.html#if">&lt;If&gt;</a></code>).</p>
+
+<p>Bien que les r&egrave;gles de r&eacute;&eacute;criture soient syntaxiquement autoris&eacute;es dans les
+sections <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code> et
+<code class="directive"><a href="../mod/core.html#files">&lt;Files&gt;</a></code> (et dans leurs
+&eacute;quivalents avec expressions rationnelles), cela n&rsquo;est pas pris en charge et ne
+devrait jamais &ecirc;tre n&eacute;cessaire. Les substitutions relatives, en particulier,
+sont susceptibles d&rsquo;&eacute;chouer dans ces contextes.</p>
+
+<div class="warning"><h3>Ces conteneurs modifient silencieusement le
+comportement des r&eacute;&eacute;critures</h3>
+<p>Placer une r&egrave;gle <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> dans
+une section <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>,
+<code class="directive"><a href="../mod/core.html#if">&lt;If&gt;</a></code> ou <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code> &mdash; m&ecirc;me dans un
+<code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> dans la
+configuration globale du serveur &mdash; fait silencieusement adopter un
+comportement de <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de r&eacute;pertoire</a>.
+Cela signifie que la barre oblique de t&ecirc;te est supprim&eacute;e de l&rsquo;URL avant la
+comparaison avec le motif, que les substitutions d&eacute;clenchent une redirection
+interne (avec risque de boucle infinie), et que le drapeau <a href="../rewrite/flags.html#flag_l">[L]</a> n&rsquo;arr&ecirc;te plus strictement le
+traitement &mdash; utilisez plut&ocirc;t le drapeau <a href="../rewrite/flags.html#flag_end">[END]</a>.</p>
+</div>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="inheritance">H&eacute;ritage des r&egrave;gles avec RewriteOptions <a title="Lien permanent" href="#inheritance" class="permalink">&para;</a></h2>
+
+<p>Par d&eacute;faut, les r&egrave;gles de <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>  ne sont <strong>pas
+h&eacute;rit&eacute;es</strong> par les sous-r&eacute;pertoires. Si vous d&eacute;finissez des r&egrave;gles dans
+<code>/var/www/htdocs/.htaccess</code>, elles ne s&rsquo;appliqueront qu&rsquo;au
+r&eacute;pertoire correspondant. Un fichier <code>.htaccess</code> dans un
+sous-r&eacute;pertoire contient initial un jeu de r&egrave;gles initial vide, &agrave; moins que vous
+n&rsquo;activiez explicitement l&rsquo;h&eacute;ritage.</p>
+
+<p>La directive <code class="directive"><a href="../mod/mod_rewrite.html#rewriteoptions">RewriteOptions</a></code>
+permet d&rsquo;effectuer cette activation&nbsp;:</p>
+
+<dl>
+<dt><code>RewriteOptions Inherit</code></dt>
+<dd>Les r&egrave;gles du contexte parent sont ajout&eacute;es &agrave; la fin du jeu de r&egrave;gles de
+l&rsquo;enfant. Le traitement des r&egrave;gles de l&rsquo;enfant est effectu&eacute; en premier, suivi du
+traitement des r&egrave;gles du parent. Utilisez cette fonctionnalit&eacute; lorsqu&rsquo;un
+sous-r&eacute;pertoire doit ajouter ses propre r&egrave;gles, tout en gardant actives les
+r&egrave;gles du parent.</dd>
+
+<dt><code>RewriteOptions InheritBefore</code></dt>
+<dd>Identique &agrave; <code>Inherit</code>, except&eacute; que les r&egrave;gles du parent sont
+trait&eacute;es avant celles de l&rsquo;enfant. Cela s&rsquo;av&egrave;re utile lorsque le parent d&eacute;finit
+un motif de contr&ocirc;leur frontal et que l&rsquo;enfant doit ajouter des exceptions.
+Disponible depuis la version 2.4.8 de httpd.</dd>
+
+
+<dt><code>RewriteOptions InheritDown</code></dt>
+<dd>Sp&eacute;cifiez cette option dans le parent pour que tous les contextes enfant
+h&eacute;ritent des r&egrave;gles du parent sans avoir &agrave; sp&eacute;cifier <code>Inherit</code>.
+Disponible depuis la version 2.4.8 de httpd.</dd>
+
+<dt><code>RewriteOptions InheritDownBefore</code></dt>
+<dd>Identique &agrave; <code>InheritDown</code>, except&eacute; que les r&egrave;gles du parent sont
+trait&eacute;es avant celles des enfants. Disponible depuis la version 2.4.8 de httpd.</dd>
+
+<dt><code>RewriteOptions IgnoreInherit</code></dt>
+<dd>Sp&eacute;cifiez cette option dans le contexte d&rsquo;un enfant pour que ce dernier
+renonce &agrave; l&rsquo;h&eacute;ritage qui avait &eacute;t&eacute; forc&eacute; par l&rsquo;option <code>InheritDown</code>
+d&rsquo;un parent. Disponible depuis la version 2.4.8 de httpd.</dd>
+
+<dt><code>RewriteOptions MergeBase</code></dt>
+<dd>Quand l&rsquo;h&eacute;ritage est activ&eacute;, la directive <code>RewriteBase</code> de chaque
+contexte s&rsquo;applique aux r&egrave;gles d&eacute;finies dans ce contexte, au lieu que la
+directive <code>RewriteBase</code> de l&rsquo;enfant s&rsquo;applique &agrave; toutes les r&egrave;gles
+h&eacute;rit&eacute;es. Disponible depuis la version 2.4.26 de httpd.</dd>
+</dl>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="debugging">D&eacute;bogage des r&egrave;gles de r&eacute;&eacute;criture dans les
+fichiers .htaccess <a title="Lien permanent" href="#debugging" class="permalink">&para;</a></h2>
+
+<p>Lorsque les r&egrave;gles de r&eacute;&eacute;criture dans les fichiers <code>.htaccess</code> ne
+fonctionnent pas comme vous le souhaitez, le journal des r&eacute;&eacute;critures est votre
+meilleur ami. Activez-le avec le niveau appropri&eacute;&nbsp;:</p>
+
+<pre class="prettyprint lang-config">LogLevel alert rewrite:trace3</pre>
+
+
+<p>Avec cette directive, le journal des erreurs montre exactement comment chaque
+r&egrave;gle est trait&eacute;e &mdash;&nbsp;&agrave; quoi les motifs ont &eacute;t&eacute; compar&eacute;s, les conditions ont-elles
+&eacute;t&eacute; satisfaites ou non et quelles substitutions ont &eacute;t&eacute; effectu&eacute;es. Le
+comportement du contexte de r&eacute;pertoire et la suppression d&rsquo;une partie du
+chemin sera visible dans ces entr&eacute;es du journal.</p>
+
+<div class="warning">ne conservez pas &agrave; &laquo;&nbsp;trace&nbsp;&raquo; le niveau de journalisation sur un
+serveur en production. Il g&eacute;n&egrave;re en effet un grand volume de donn&eacute;es en sortie
+et affecte les performances.</div>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="caching">Mise en cache des &laquo;&nbsp;301 redirects&nbsp;&raquo; au niveau du
+navigateur <a title="Lien permanent" href="#caching" class="permalink">&para;</a></h2>
+
+<p>Quand vous renvoyez une redirection <code>301 Moved Permanently</code> (via
+<code>[R=301]</code> ou <code class="directive"><a href="../mod/mod_alias.html#redirect permanent">Redirect permanent</a></code>), le navigateur est autoris&eacute; &agrave; mettre en cache
+cette r&eacute;ponse ind&eacute;finiment. Cela signifie que m&ecirc;me lorsque vous aurez corrig&eacute;
+une r&egrave;gle de redirection incorrecte dans votre configuration, les clients qui
+font &agrave; nouveau la m&ecirc;me requ&ecirc;te pourront se voir redirig&eacute;s vers l&rsquo;ancienne
+destination (incorrecte) sans jamais contacter &agrave; nouveau votre serveur.</p>
+
+<p>Lors d&rsquo;un d&eacute;bogage de r&egrave;gles de redirection, utilisez <code>[R=302]</code>
+(redirection temporaire) &agrave; la place de <code>[R=301]</code>. Ne repassez &agrave; 301
+que lorsque vous avez confirm&eacute; que la r&egrave;gle est correcte. Si vous avez d&eacute;j&agrave;
+renvoy&eacute; un code 301, les clients affect&eacute;s devront vider le cache de leur
+navigateur (ou utiliser une fen&ecirc;tre priv&eacute;e/incognito) pour voir un comportement
+correct.</p>
+
+<div class="note">Les moteurs de recherche mettent aussi en cache les redirections 301. Un
+code 301 incorrect peut prendre des jours ou des semaines avant d&rsquo;&ecirc;tre
+r&eacute;explor&eacute;, m&ecirc;me apr&egrave;s que la configuration a &eacute;t&eacute; corrig&eacute;e. C&rsquo;est une autre
+raison pour laquelle il vaut mieux faire ses tests avec un code 302.</div>
+
+</div></div>
 <div class="bottomlang">
 <p><span>Langues Disponibles: </span><a href="../de/rewrite/htaccess.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
 <a href="../en/rewrite/htaccess.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
index 33b091c226ae109aa00b5d0a43b9f108b4db49ea..ce306bb9a353027023bfabb11f485925e15e059d 100644 (file)
@@ -10,7 +10,7 @@
     <variant outdated="yes">de</variant>
     <variant>en</variant>
     <variant outdated="yes">es</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
     <variant outdated="yes">ja</variant>
     <variant outdated="yes">ko</variant>
     <variant outdated="yes">tr</variant>
index da2d20746717517337cbe4a3fa17e14d616eec36..cf3662023d03036a847966a1cd6cc8c58f1b84ba 100644 (file)
@@ -32,8 +32,6 @@
 <a href="../tr/rewrite/remapping.html" hreflang="tr" rel="alternate" title="T&uuml;rk&ccedil;e">&nbsp;tr&nbsp;</a> |
 <a href="../zh-cn/rewrite/remapping.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese">&nbsp;zh-cn&nbsp;</a></p>
 </div>
-<div class="outofdate">Cette traduction peut &ecirc;tre p&eacute;rim&eacute;e. V&eacute;rifiez la version
-            anglaise pour les changements r&eacute;cents.</div>
 
 
 <p>Ce document est un compl&eacute;ment &agrave; la <a href="../mod/mod_rewrite.html">Documentation de r&eacute;f&eacute;rence</a> de
@@ -43,26 +41,26 @@ correspondance une requ&ecirc;te. Il contient de
 nombreux exemples d'utilisation courante de <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> avec une
 description d&eacute;taill&eacute;e de leur fonctionnement.</p>
 
-<div class="warning">Vous devez vous attacher &agrave; comprendre le
-fonctionnement des exemples, car la plupart d'entre eux ne
-fonctionneront pas sur votre syst&egrave;me si vous vous contentez de les
-copier/coller dans vos fichiers de configuration.</div>
-
 </div>
 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif"> <a href="#old-to-new">De l'ancienne &agrave; la nouvelle URL (en interne)</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#https-redirect">Forcer HTTPS</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#acme-exemption">Exempter les requ&ecirc;tes de d&eacute;fi ACME de la redirection HTTPS</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#trailing-slash">Normalisation de la barre oblique de fin</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#front-controller">Contr&ocirc;leur frontal / Routage d&rsquo;pplication</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#old-to-new-extern">De l'ancien au nouveau (en externe)</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#movehomedirs">Ressource d&eacute;plac&eacute;e vers un autre serveur</a></li>
-<li><img alt="" src="../images/down.gif"> <a href="#static-to-dynamic">De statique &agrave; dynamique</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#backward-compatibility">Compatibilit&eacute; ascendante dans le cadre d'une modification
       d'extension de nom de fichier</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#canonicalhost">Noms d'h&ocirc;tes canoniques</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#multipledirs">Recherche de pages dans plus d'un r&eacute;pertoire</a></li>
-<li><img alt="" src="../images/down.gif"> <a href="#archive-access-multiplexer">Redirection vers des serveurs g&eacute;ographiquement distribu&eacute;s</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#canonicalurl">URLs canoniques</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#moveddocroot">D&eacute;placement du r&eacute;pertoire <code>DocumentRoot</code></a></li>
-<li><img alt="" src="../images/down.gif"> <a href="#fallback-resource">Ressource par d&eacute;faut</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#rewrite-query">Rewrite query string</a></li>
-</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Documentation du module mod_rewrite</a></li><li><a href="intro.html">Introduction &agrave; mod_rewrite</a></li><li><a href="access.html">Contr&ocirc;ler l'acc&egrave;s</a></li><li><a href="vhosts.html">Serveurs virtuels</a></li><li><a href="proxy.html">Serveurs mandataires</a></li><li><a href="rewritemap.html">Utilisation de RewriteMap</a></li><li><a href="advanced.html">Techniques avanc&eacute;es</a></li><li><a href="avoid.html">Quand ne pas utiliser mod_rewrite</a></li></ul></div>
+<li><img alt="" src="../images/down.gif"> <a href="#structuredhomedirs">R&eacute;pertoires utilisateur structur&eacute;s</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#redirectanchors">Redirection vers une ancre</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#time-dependent">R&eacute;&eacute;criture d&eacute;pendant du temps</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#on-the-fly-content">R&eacute;g&eacute;n&eacute;ration du contenu &agrave; la vol&eacute;e</a></li>
+</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Documentation du module mod_rewrite</a></li><li><a href="intro.html">Introduction &agrave; mod_rewrite</a></li><li><a href="htaccess.html">R&eacute;&eacute;critures par r&eacute;pertoire</a></li><li><a href="flags.html">Drapeaux des r&egrave;gles RewriteRule</a></li><li><a href="vhosts.html">Serveurs virtuels</a></li><li><a href="rewritemap.html">Utilisation de RewriteMap</a></li><li><a href="avoid.html">Quand ne pas utiliser mod_rewrite</a></li><li><a href="tech.html">D&eacute;tails techniques</a></li></ul></div>
 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="old-to-new">De l'ancienne &agrave; la nouvelle URL (en interne) <a title="Lien permanent" href="#old-to-new" class="permalink">&para;</a></h2>
@@ -90,9 +88,224 @@ copier/coller dans vos fichiers de configuration.</div>
 <pre class="prettyprint lang-config">RewriteEngine  on
 RewriteRule    "^<strong>/foo</strong>\.html$" "<strong>/bar</strong>.html" [PT]</pre>
 
+    </dd>
+</dl>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="https-redirect">Forcer HTTPS <a title="Lien permanent" href="#https-redirect" class="permalink">&para;</a></h2>
+
+  
+
+  <dl>
+    <dt>Description&nbsp;:</dt>
+
+    <dd>
+      <p>Rediriger toutes les requ&ecirc;tes HTTP vers HTTPS. C&rsquo;est un des
+      emplois les plus courants de <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, mais dans la
+      plupart des cas, on y parvient d&rsquo;une meilleur fa&ccedil;on sans lui.</p>
+    </dd>
+
+    <dt>Solution&nbsp;:</dt>
+
+    <dd>
+
+      <p>L&rsquo;approche pr&eacute;f&eacute;r&eacute;e utilise une directive <code class="directive"><a href="../mod/mod_alias.html#redirect">Redirect</a></code> dans un serveur virtuel HTTP
+      d&eacute;di&eacute;&nbsp;:</p>
+
+<pre class="prettyprint lang-config">&lt;VirtualHost *:80&gt;
+    ServerName www.example.com
+    Redirect permanent "/" "https://www.example.com/"
+&lt;/VirtualHost&gt;
+
+&lt;VirtualHost *:443&gt;
+    ServerName www.example.com
+    # ... emplacement de la configuration SSL
+&lt;/VirtualHost&gt;</pre>
+
+
+    </dd>
+
+    <dt>Explication&nbsp;:</dt>
+
+    <dd>
+      <p>Si vous n&rsquo;avez pas acc&egrave;s &agrave; la configuration du serveur et devez
+      utiliser un fichier <code>.htaccess</code>, <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
+      sera l&rsquo;outil appropri&eacute;&nbsp;:</p>
+
+<pre class="prettyprint lang-config">RewriteEngine On
+RewriteCond "%{HTTPS}" !=on
+RewriteRule "^(.*)" "https://%{SERVER_NAME}$1" [R=301,L]</pre>
+
+
+      <p>La variable <code>%{HTTPS}</code> est d&eacute;finie &agrave; <code>on</code> si
+      la connexion utilise SSL/TLS, et est vide ou &agrave; <code>off</code> dans le
+      cas contraire. Utiliser <code>R=301</code> produit une redirection
+      permanente qui signale aux moteurs de recherche qu&rsquo;ils doivent mettre
+      leur index &agrave; jour.</p>
+
+      <p>Voir aussi le document <a href="avoid.html#redirect">Quand ne pas
+      utiliser mod_rewrite</a> pour plus de discussions &agrave; propos de l&rsquo;approche
+      <code>Redirect</code>.</p>
+
+      <div class="note"><h3>Derri&egrave;re un r&eacute;partiteur de charge ou un terminateur SSL</h3>
+      <p>La variable <code>%{HTTPS}</code> n&rsquo;est pas une variable
+      d&rsquo;environnement &agrave; usage g&eacute;n&eacute;ral &mdash;&nbsp;elle interroge directement
+      <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>. Si la terminaison SSL/TLS est effectu&eacute;e au
+      niveau d'un r&eacute;partiteur de charge ou d'un mandataire inverse en amont,
+      <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> ne g&egrave;re pas la connexion et <code>%{HTTPS}</code>
+      indiquera toujours <code>off</code>, m&ecirc;me si le client originel s&rsquo;est
+      connect&eacute; en HTTPS.</p>
+
+      <p>Dans cette situation, il faut plut&ocirc;t consulter l&rsquo;en-t&ecirc;te d&eacute;fini par le
+      mandataire en amont. La plupart des r&eacute;partiteurs de charge d&eacute;finissent
+      <code>X-Forwarded-Proto</code>&nbsp;:</p>
+      </div>
+
+<pre class="prettyprint lang-config">RewriteEngine On
+RewriteCond "%{HTTP:X-Forwarded-Proto}" =http [NC]
+RewriteRule "^(.*)" "https://%{SERVER_NAME}$1" [R=301,L]</pre>
+
+
+      <div class="warning">
+      <p>Ne faites confiance &agrave; <code>X-Forwarded-Proto</code> que si vous
+      contr&ocirc;lez le mandataire en amont et qu'il &eacute;crase l'en-t&ecirc;te &agrave; chaque
+      requ&ecirc;te. Un attaquant pourrait corrompre cet en-t&ecirc;te en se connectant
+      directement &agrave; votre serveur. Assurez-vous de restreindre l&rsquo;acc&egrave;s de fa&ccedil;on
+      que seul votre r&eacute;partiteur de charge puisse atteindre le serveur dorsal,
+      ou utilisez <code class="module"><a href="../mod/mod_remoteip.html">mod_remoteip</a></code> pour valider la source.</p>
+      </div>
+
+    </dd>
+  </dl>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="acme-exemption">Exempter les requ&ecirc;tes de d&eacute;fi ACME de la redirection HTTPS <a title="Lien permanent" href="#acme-exemption" class="permalink">&para;</a></h2>
+
+  
+
+  <dl>
+    <dt>Description&nbsp;:</dt>
+
+    <dd>
+      <p>Vous avez forc&eacute; tout le trafic &agrave; s&rsquo;effectuer en HTTPS (comme ci-avant),
+      mais votre client ACME (Let's Encrypt, Certbot, etc.) n&eacute;cessite un acc&egrave;s
+      en HTTP &agrave; <code>/.well-known/acme-challenge/</code> pour achever la
+      validation du domaine.</p>
+    </dd>
+
+    <dt>Solution&nbsp;:</dt>
+
+    <dd>
+      <p>Placer une exception <em>avant</em> la r&egrave;gle de redirection HTTPS&nbsp;:</p>
+
+<pre class="prettyprint lang-config">RewriteEngine On
+RewriteRule "^/\.well-known/acme-challenge/" - [L]
+RewriteCond "%{HTTPS}" !=on
+RewriteRule "^(.*)" "https://%{SERVER_NAME}$1" [R=301,L]</pre>
+
+    </dd>
+
+    <dt>Explication&nbsp;:</dt>
+
+    <dd>
+      <p>La substitution mat&eacute;rialis&eacute;e par un tiret (<code>-</code>) signifie
+      &laquo;&nbsp;ne pas r&eacute;&eacute;crire&nbsp;&raquo;. En combinaison avec le drapeau <code>[L]</code>, elle
+      arr&ecirc;te le traitement des r&egrave;gles pour toute requ&ecirc;te correspondant au chemin
+      du d&eacute;fi ACME, permettant &agrave; cette derni&egrave;re d&rsquo;&ecirc;tre servie en HTTP. Le
+      traitement de toutes les autres requ&ecirc;tes continue avec la r&egrave;gle suivante
+      et les redirige vers HTTPS de la mani&egrave;re habituelle.</p>
+
+      <p>Si vous adoptez l&rsquo;approche par la directive <code class="directive"><a href="../mod/mod_alias.html#redirect">Redirect</a></code> dans un serveur virtuel d&eacute;di&eacute; au
+      port 80, utilisez les directives <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code> et <code class="directive"><a href="../mod/mod_alias.html#redirectmatch">RedirectMatch</a></code> &agrave; la place&nbsp;:</p>
+
+<pre class="prettyprint lang-config">&lt;VirtualHost *:80&gt;
+    ServerName www.example.com
+
+    # Permettre les d&eacute;fis ACME sur HTTP
+    Alias "/.well-known/acme-challenge/" "/var/www/acme/.well-known/acme-challenge/"
+    &lt;Directory "/var/www/acme/.well-known/acme-challenge"&gt;
+        Require all granted
+    &lt;/Directory&gt;
+
+    # Tout le reste est redirig&eacute; vers HTTPS
+    RedirectMatch permanent "^/(?!\.well-known/acme-challenge/)(.*)$" "https://www.example.com/$1"
+&lt;/VirtualHost&gt;</pre>
+
+
     </dd>
   </dl>
 
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="trailing-slash">Normalisation de la barre oblique de fin <a title="Lien permanent" href="#trailing-slash" class="permalink">&para;</a></h2>
+
+  
+
+  <dl>
+    <dt>Description&nbsp;:</dt>
+
+    <dd>
+      <p>Vous souhaitez que les URLs pour des r&eacute;pertoires se terminent toujours
+      par une barre oblique ou, au contraire, que ce ne soit jamais le cas.
+      Il s&rsquo;agit d&rsquo;un pr&eacute;requis courant pour SEO et pour la gestion coh&eacute;rente des
+      URLs par les applications web.</p>
+    </dd>
+
+    <dt>Solution&nbsp;:</dt>
+
+    <dd>
+      <p>Pour ajouter une barre oblique de fin aux URLs qui correspondent &agrave; des
+      r&eacute;pertoires&nbsp;:</p>
+
+<pre class="prettyprint lang-config">RewriteCond "%{REQUEST_FILENAME}" -d
+RewriteCond "%{REQUEST_URI}" "!/$"
+RewriteRule "^(.*)$" "$1/" [R=301,L]</pre>
+
+
+      <p>Pour supprimer la barre oblique de fin (sauf pour les v&eacute;ritables
+      r&eacute;pertoires)&nbsp;:</p>
+
+<pre class="prettyprint lang-config">RewriteCond "%{REQUEST_FILENAME}" !-d
+RewriteCond "%{REQUEST_URI}" "(.+)/$"
+RewriteRule "^" "%1" [R=301,L]</pre>
+
+
+    </dd>
+
+    <dt>Explication&nbsp;:</dt>
+
+    <dd>
+      <p>Le module <code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code> de httpd g&egrave;re d&eacute;j&agrave; les redirections
+      de barre oblique de fin pour les v&eacute;ritables r&eacute;pertoires lorsque la
+      directive <code class="directive"><a href="../mod/mod_dir.html#directoryslash">DirectorySlash</a></code> est
+      activ&eacute;e (elle l&rsquo;est par d&eacute;faut). Vous n&rsquo;avez besoin que d&rsquo;une r&egrave;gle de
+      <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> si vous souhaitez imposer un comportement
+      pour les barres obliques de fin pour les URLs qui ne correspondent pas &agrave;
+      de v&eacute;ritables r&eacute;pertoires sur disque, ou si vous voulez supprimer des
+      barres obliques de fin.</p>
+    </dd>
+</dl>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="front-controller">Contr&ocirc;leur frontal / Routage d&rsquo;pplication <a title="Lien permanent" href="#front-controller" class="permalink">&para;</a></h2>
+
+  
+
+  <p>La plupart des cadriciels web modernes routent toutes les requ&ecirc;tes vers un
+  seul point d&rsquo;entr&eacute;e&nbsp;: le contr&ocirc;leur frontal (&laquo;&nbsp;front controller&nbsp;&raquo;). La
+  directive <code class="directive"><a href="../mod/mod_dir.html#fallbackresource">FallbackResource</a></code> g&egrave;re cela
+  plus simplement et efficacement que <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>. Voir le
+  document <a href="avoid.html#fallback-resource">Quand ne pas utiliser
+  mod_rewrite</a> pour l&rsquo;approche recommand&eacute;e.</p>
+
+  <p>Si vous avez r&eacute;ellement besoin de <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> pour cela
+  (par exemple, pour ajouter des conditions plus complexes que &laquo;&nbsp;fichier non
+  existant&nbsp;&raquo;), consultez le document <a href="htaccess.html#rewritebase">R&eacute;&eacute;critures par r&eacute;pertoire</a> pour un
+  exemple annot&eacute; qui illustre aussi l&rsquo;utilisation de la directive <code class="directive"><a href="../mod/mod_rewrite.html#rewritebase">RewriteBase</a></code>.</p>
+
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="old-to-new-extern">De l'ancien au nouveau (en externe) <a title="Lien permanent" href="#old-to-new-extern" class="permalink">&para;</a></h2>
@@ -124,7 +337,7 @@ RewriteRule    "^<strong>foo</strong>\.html$"  "<strong>bar</strong>.html"  [<st
 
 </dd>
 
-<dt>Discussion</dt>
+<dt>Explication</dt>
 
     <dd>
     <p>Dans l'exemple <a href="#old-to-new-intern">interne</a>, on a utilis&eacute; <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> afin
@@ -173,38 +386,12 @@ RedirectMatch "^/docs/(.*)" "http://nouveau.example.com/docs/$1"</pre>
 Redirect "/docs/" "http://nouveau.example.com/docs/"</pre>
 
     </dd>
-  </dl>
-
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
-<div class="section">
-<h2 id="static-to-dynamic">De statique &agrave; dynamique <a title="Lien permanent" href="#static-to-dynamic" class="permalink">&para;</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Comment transformer une page statique <code>foo.html</code>
-         en sa variante dynamique <code>foo.cgi</code> de mani&egrave;re
-         transparente, c'est &agrave; dire sans en avertir le
-         navigateur/utilisateur.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
+    <dt>Explication&nbsp;:</dt>
         <dd>
-          <p>On r&eacute;&eacute;crit simplement l'URL en script CGI et force le
-         gestionnaire de contenu &agrave; <strong>cgi-script</strong> de fa&ccedil;on
-         &agrave; ce que le script s'ex&eacute;cute en tant que programme CGI.
-         Ainsi, une requ&ecirc;te vers <code>/~quux/foo.html</code> conduit
-         en interne &agrave; l'invocation de
-         <code>/~quux/foo.cgi</code>.</p>
-
-<pre class="prettyprint lang-config">RewriteEngine  on
-RewriteBase    "/~quux/"
-RewriteRule    "^foo\.html$"  "foo.cgi"  [H=<strong>cgi-script</strong>]</pre>
 
+      <p>Pour une simple redirection vers un autre serveur, il est pr&eacute;f&eacute;rable
+      d&rsquo;utiliser les directives <code class="directive"><a href="../mod/mod_alias.html#redirect">Redirect</a></code> ou <code class="directive"><a href="../mod/mod_alias.html#redirectmatch">RedirectMatch</a></code>, car elles sont plus simples
+      et plus efficaces.</p>
         </dd>
       </dl>
 
@@ -230,10 +417,10 @@ RewriteRule    "^foo\.html$"  "foo.cgi"  [H=<strong>cgi-script</strong>]</pre>
         <dt>Solution :</dt>
 
         <dd>
-         <p>L'URL n'est r&eacute;&eacute;crite en rempla&ccedil;ant l'ancienne extension par la
+         <p>L&rsquo;URL n&rsquo;est r&eacute;&eacute;crite en rempla&ccedil;ant l&rsquo;ancienne extension par la
          nouvelle que si le fichier cible avec la nouvelle extension existe et
-         si le fichier originel avec l'ancienne extension n'existe pas. Sinon,
-         l'URL reste inchang&eacute;e.</p>
+         si le fichier originel avec l&rsquo;ancienne extension n&rsquo;existe pas. Sinon,
+         l&rsquo;URL reste inchang&eacute;e.</p>
 
 
 <pre class="prettyprint lang-config">#   jeu de r&egrave;gles assurant une compatibilit&eacute; ascendante en r&eacute;&eacute;crivant<br>
@@ -250,7 +437,7 @@ RewriteRule    "^foo\.html$"  "foo.cgi"  [H=<strong>cgi-script</strong>]</pre>
 
     </dd>
 
-    <dt>Discussion</dt>
+    <dt>Explication</dt>
     <dd>
     <p>Cet exemple utilise une fonctionnalit&eacute; souvent m&eacute;connue de
     <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, en tirant avantage de l'ordre d'ex&eacute;cution du jeu de
@@ -346,6 +533,15 @@ RewriteRule "^/?(.*)"         "http://www.example.com/$1" [L,R,NE]</pre>
        possibles de <strong>example.com</strong>, vous pouvez utiliser
        le jeu de r&egrave;gles suivants :</p>
 
+<p>Pour faire l&rsquo;inverse &mdash;&nbsp;supprimer le pr&eacute;fixe <code>www.</code> &mdash;&nbsp;inversez la
+condition&nbsp;:</p>
+
+<pre class="prettyprint lang-config">RewriteCond "%{HTTP_HOST}" "^www\.(.+)$"              [NC]
+RewriteRule "^(.*)"        "http://%1/$1"             [L,R,NE]</pre>
+
+
+<p>Pour ajouter de mani&egrave;re g&eacute;n&eacute;rique <code>www.</code> &agrave; tout nom d&rsquo;h&ocirc;te&nbsp;:</p>
+
 <pre class="prettyprint lang-config">RewriteCond "%{HTTP_HOST}" "!^www\." [NC]
 RewriteCond "%{HTTP_HOST}" "!^$"
 RewriteRule "^/?(.*)" "http://www.%{HTTP_HOST}/$1" [L,R,NE]</pre>
@@ -355,9 +551,24 @@ RewriteRule "^/?(.*)" "http://www.%{HTTP_HOST}/$1" [L,R,NE]</pre>
        de configuration de votre serveur principal que dans un fichier
        <code>.htaccess</code> plac&eacute; dans le r&eacute;pertoire d&eacute;fini par la
        directive <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> du serveur.</p>
-        </dd>
-      </dl>
 
+    </dd>
+
+    <dt>Explication&nbsp;:</dt>
+
+    <dd>
+      <p>Si vous avez acc&egrave;s &agrave; la configuration globale du serveur, une directive
+      <code class="directive"><a href="../mod/mod_alias.html#redirect">Redirect</a></code> dans un <code class="directive"><a href="../mod/core.html#serveur virtuel">&lt;serveur virtuel&gt;</a></code> d&eacute;di&eacute; constitue
+      l&rsquo;approche la plus propre. Mettre sous forme canonique le nom d&rsquo;h&ocirc;te
+      permet de s&rsquo;assurer que les moteurs de recherche traiterons votre site
+      comme une seule entit&eacute;, et &eacute;vite les probl&egrave;mes de port&eacute;e de cookie qui
+      surviennent lorsqu&rsquo;un m&ecirc;me site est accessible sous plusieurs noms.</p>
+      <p>N&rsquo;utilisez la directive <code class="directive"><a href="../mod/core.html#if">&lt;If&gt;</a></code> et <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> comme
+      compromis que si vous &ecirc;tes contraint d&rsquo;utiliser un fichier
+      <code>.htaccess</code>.</p>
+    </dd>
+
+</dl>
     </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="multipledirs">Recherche de pages dans plus d'un r&eacute;pertoire <a title="Lien permanent" href="#multipledirs" class="permalink">&para;</a></h2>
@@ -400,60 +611,13 @@ RewriteRule  "^(.+)"  "%{DOCUMENT_ROOT}/<strong>dir2</strong>/$1"  [L]
 RewriteRule   "^"  "-"  [PT]</pre>
 
         </dd>
-      </dl>
-
-    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
-<div class="section">
-<h2 id="archive-access-multiplexer">Redirection vers des serveurs g&eacute;ographiquement distribu&eacute;s <a title="Lien permanent" href="#archive-access-multiplexer" class="permalink">&para;</a></h2>
-
-  
-
-  <dl>
-    <dt>Description :</dt>
-
-    <dd>
-    <p>Notre site web poss&egrave;de de nombreux miroirs, et nous voulons
-    rediriger les utilisateurs vers celui qui se situe dans le pays o&ugrave;
-    ils se trouvent. </p>
-    </dd>
 
-    <dt>Solution :</dt>
-
-    <dd>
-    <p>En consultant le nom d'h&ocirc;te du client demandeur, on d&eacute;termine le
-    pays dans lequel il se trouve. S'il est impossible d'effectuer une
-    recherche sur leur adresse IP, on se rabat sur un serveur par
-    d&eacute;faut.</p>
-    <p>Nous allons utiliser une directive <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code> afin de construire une
-    liste des serveurs que nous voulons utiliser.</p>
-
-<pre class="prettyprint lang-config">HostnameLookups on
-RewriteEngine on
-RewriteMap    multiplex         "txt:/path/to/map.mirrors"
-RewriteCond  "%{REMOTE_HOST}"     "([a-z]+)$ [NC]"
-RewriteRule   "^/(.*)$"  "${multiplex:<strong>%1</strong>|http://www.example.com/}$1"  [R,L]</pre>
-
-
-<div class="example"><p><code>
-##  liste_miroirs -- Table de correspondance pays - serveurs<br>
-<br>
-de        http://www.exemple.de/<br>
-uk        http://www.exemple.uk/<br>
-com       http://www.example.com/<br>
-##EOF##
-</code></p></div>
-    </dd>
+    <dt>Explication&nbsp;:</dt>
 
-    <dt>Discussion</dt>
     <dd>
-    <div class="warning">Ce jeu de r&egrave;gles n&eacute;cessite la d&eacute;finition &agrave;
-    <code>on</code> de la directive <code class="directive"><a href="../mod/core.html#hostnamelookups">HostNameLookups</a></code>, ce qui peut induire une
-    baisse de performance significative.</div>
-
-    <p>La directive <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code> extrait la derni&egrave;re
-    partie du nom d'h&ocirc;te du client demandeur - le code du pays - et la
-    r&egrave;gle de r&eacute;&eacute;criture qui suit utilise cette valeur pour rechercher le
-    serveur miroir appropri&eacute; dans le fichier de correspondances.</p>
+      <p>Ce qui pr&eacute;c&egrave;de s&rsquo;av&egrave;re utile pendant les migrations lorsque le contenu
+      est d&eacute;plac&eacute; d&rsquo;un r&eacute;pertoire vers un autre. Pour une configuration
+      permanente, utilisez plut&ocirc;t la directive <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code> ou des liens symboliques.</p>
     </dd>
   </dl>
 
@@ -545,56 +709,6 @@ de r&eacute;&eacute;crire les URLs.</p>
 </dd>
 </dl>
 
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
-<div class="section">
-<h2 id="fallback-resource">Ressource par d&eacute;faut <a title="Lien permanent" href="#fallback-resource" class="permalink">&para;</a></h2>
-
-
-<dl>
-<dt>Description :</dt>
-<dd>Vous voulez qu'une seule ressource (disons un certain fichier tel
-que index.php) soit servie pour toutes les requ&ecirc;tes &agrave; destination d'un
-certain r&eacute;pertoire, sauf pour celles qui concernent une ressource
-existant effectivement comme une image, ou un fichier css.</dd>
-
-<dt>Solution :</dt>
-<dd>
-<p>Depuis la version 2.2.16, vous pouvez y parvenir via la directive
-<code class="directive"><a href="../mod/mod_dir.html#fallbackresource">FallbackResource</a></code> :</p>
-
-<pre class="prettyprint lang-config">&lt;Directory "/var/www/my_blog"&gt;
-  FallbackResource index.php
-&lt;/Directory&gt;</pre>
-
-
-<p>Cependant, si vos besoins &eacute;taient plus complexes, vous pouviez, dans
-les versions plus anciennes d'Apache, utiliser un jeu de r&egrave;gles du style
-:</p>
-
-<pre class="prettyprint lang-config">&lt;Directory "/var/www/my_blog"&gt;
-  RewriteBase "/my_blog"
-
-  RewriteCond "/var/www/my_blog/%{REQUEST_FILENAME}" !-f
-  RewriteCond "/var/www/my_blog/%{REQUEST_FILENAME}" !-d
-  RewriteRule "^" "index.php" [PT]
-&lt;/Directory&gt;</pre>
-
-
-<p>D'autre part, si vous voulez transmettre l'URI de la requ&ecirc;te en tant
-que cha&icirc;ne de param&egrave;tres &agrave; index.php, vous pouvez remplacer cette r&egrave;gle
-de r&eacute;&eacute;criture par :</p>
-
-<pre class="prettyprint lang-config">RewriteRule "(.*)" "index.php?$1" [PT,QSA]</pre>
-
-
-<p>Notez que l'on peut utiliser ces jeux de r&egrave;gles aussi bien dans un
-fichier <code>.htaccess</code> que dans une section
-&lt;Directory&gt;.</p>
-
-</dd>
-
-</dl>
-
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="rewrite-query">Rewrite query string <a title="Lien permanent" href="#rewrite-query" class="permalink">&para;</a></h2>
@@ -641,19 +755,203 @@ RewriteRule "(.*)" - [F]</pre>
 
   </li>
 
-  <li>Cette solution produit l'effet inverse des pr&eacute;c&eacute;dentes ; elle
-  copie des composantes du chemin (peut-&ecirc;tre PATH_INFO) depuis l'URL
-  vers sa cha&icirc;ne de param&egrave;tres :
-<pre class="prettyprint lang-config"># The desired URL might be /products/kitchen-sink, and the script expects 
+  <li>Cette solution produit l'effet inverse des pr&eacute;c&eacute;dentes ; elle copie des
+  composantes du chemin (peut-&ecirc;tre <a class="glossarylink" href="../glossary.html#pathinfo" title="voir glossaire">PATH_INFO</a>) depuis l'URL vers sa cha&icirc;ne de param&egrave;tres
+  : <pre class="prettyprint lang-config"># The desired URL might be /products/kitchen-sink, and the script expects
 # /path?products=kitchen-sink.
 RewriteRule "^/?path/([^/]+)/([^/]+)" "/path?$1=$2" [PT]</pre>
-
   </li>
 </ul>
 
 </dd>
 
+<dt>Explication&nbsp;:</dt>
+
+<dd>
+<p>Voir aussi les drapeaux <a href="flags.html#flag_qsa">[QSA]</a> et <a href="flags.html#flag_qsd">[QSD]</a> qui permettent de contr&ocirc;ler si la cha&icirc;ne de
+param&egrave;tres originelle est ajout&eacute;e &agrave; la fin de la substitution ou supprim&eacute;e de
+cette derni&egrave;re.</p>
+</dd>
+
+
 </dl>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="structuredhomedirs">R&eacute;pertoires utilisateur structur&eacute;s <a title="Lien permanent" href="#structuredhomedirs" class="permalink">&para;</a></h2>
+
+  
+
+  <dl>
+    <dt>Description&nbsp;:</dt>
+
+    <dd>
+      <p>Certains sites avec plusieurs milliers d&rsquo;utilisateurs poss&egrave;dent une
+      organisation structur&eacute;e des r&eacute;pertoires utilisateur, c&rsquo;est-&agrave;-dire que
+      chaque r&eacute;pertoire utilisateur est dans un sous-r&eacute;pertoire qui commence
+      (par exemple) par le premier caract&egrave;re du nom de l&rsquo;utilisateur. Ainsi,
+      <code>/~larry/anypath</code> correspond &agrave;
+      <code>/home/<strong>l</strong>/larry/public_html/anypath</code> et
+      <code>/~waldo/anypath</code> &agrave;
+      <code>/home/<strong>w</strong>/waldo/public_html/anypath</code>.</p>
+    </dd>
+
+    <dt>Solution&nbsp;:</dt>
+
+    <dd>
+      <p>Nous utilisons le jeu de r&egrave;gles suivant pour d&eacute;velopper les URLs avec
+      tilde selon l&rsquo;organisation ci-dessus.</p>
+
+<pre class="prettyprint lang-config">RewriteEngine on
+RewriteRule   "^/~(<strong>([a-z])</strong>[a-z0-9]+)(.*)"  "/home/<strong>$2</strong>/$1/public_html$3"</pre>
+
+    </dd>
+
+    <dt>Explication&nbsp;:</dt>
+
+    <dd>
+      <p>Cette technique est principalement utile pour les environnements
+      d&rsquo;h&eacute;bergement de grande capacit&eacute; avec plusieurs milliers d&rsquo;utilisateurs.
+      Pour la plupart des sites, <code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code> g&egrave;re les URLs
+      utilisateur avec tilde sans avoir besoin de <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.</p>
+    </dd>
+  </dl>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="redirectanchors">Redirection vers une ancre <a title="Lien permanent" href="#redirectanchors" class="permalink">&para;</a></h2>
+
+  
+
+  <dl>
+    <dt>Description&nbsp;:</dt>
+
+    <dd>
+    <p>Par d&eacute;faut, la redirection vers une ancre HTML ne fonctionne pas, car
+    <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> &eacute;chappe le caract&egrave;re <code>#</code> en le
+    rempla&ccedil;ant par <code>%23</code>, ce qui casse la redirection.</p>
+    </dd>
+
+    <dt>Solution&nbsp;:</dt>
+
+    <dd>
+      <p>Utiliser le drapeau <code>[NE]</code> dans la r&egrave;gle
+      <code>RewriteRule</code>. NE signifie &laquo;&nbsp;No Escape&nbsp;&raquo;.
+      </p>
+    </dd>
+
+    <dt>Explication&nbsp;:</dt>
+    <dd>Bien entendu, cette technique fonctionne aussi pour d&rsquo;autres caract&egrave;res
+    sp&eacute;ciaux que <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> encode par d&eacute;faut pour les URLs.</dd>
+  </dl>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="time-dependent">R&eacute;&eacute;criture d&eacute;pendant du temps <a title="Lien permanent" href="#time-dependent" class="permalink">&para;</a></h2>
+
+  
+
+  <dl>
+    <dt>Description&nbsp;:</dt>
+
+    <dd>
+      <p>Nous voulons utiliser <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> pour servir des
+      contenus diff&eacute;rents en fonction de l&rsquo;heure du jour.</p>
+    </dd>
+
+    <dt>Solution&nbsp;:</dt>
+
+    <dd>
+      <p>Il esixte de nombreuses variables nomm&eacute;es <code>TIME_xxx</code> &agrave;
+      utiliser dans les conditions de r&eacute;&eacute;criture. En combinaison avec les motifs
+      de comparaison lexicographique sp&eacute;ciaux <code>&lt;STRING</code>,
+      <code>&gt;STRING</code> et <code>=STRING</code>, nous pouvons configurer
+      des redirections d&eacute;pendant du temps&nbsp;:</p>
+
+<pre class="prettyprint lang-config">RewriteEngine on
+RewriteCond   "%{TIME_HOUR}%{TIME_MIN}" &gt;0700
+RewriteCond   "%{TIME_HOUR}%{TIME_MIN}" &lt;1900
+RewriteRule   "^foo\.html$"             "foo.day.html" [L]
+RewriteRule   "^foo\.html$"             "foo.night.html"</pre>
+
+
+      <p>Cette configuration sert le contenu de <code>foo.day.html</code> sous
+      l&rsquo;URL <code>foo.html</code> de <code>07:01</code> &agrave; <code>18:59</code> et
+      le contenu de <code>foo.night.html</code> pendant le temps restant.</p>
+
+      <div class="warning"><code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>, les mandataires
+      interm&eacute;diaires et les navigateurs peuvent chacun mettre en cache les
+      r&eacute;ponses et provoquer de ce fait l&rsquo;affichage d&rsquo;une page en dehors de la
+      fen&ecirc;tre de temps configur&eacute;e. <code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code> permet de
+      contr&ocirc;ler cet effet. Il est bien entendu pr&eacute;f&eacute;rable de simplement servir
+      le contenu de mani&egrave;re dynamique et de le personnaliser en fonction de
+      l&rsquo;heure du jour.</div>
+
+    </dd>
+
+    <dt>Explication&nbsp;:</dt>
+
+    <dd>
+      <p>Servir du contenu dynamique par l&rsquo;interm&eacute;diaire de votre application
+      constitue pratiquement toujours une meilleure approche. La mise en cache
+      par les navigateurs, les mandataires et <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> rend la
+      r&eacute;&eacute;criture en fonction du temps non fiable en pratique.</p>
+    </dd>
+  </dl>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="on-the-fly-content">R&eacute;g&eacute;n&eacute;ration du contenu &agrave; la vol&eacute;e <a title="Lien permanent" href="#on-the-fly-content" class="permalink">&para;</a></h2>
+
+  
+
+  <dl>
+    <dt>Description&nbsp;:</dt>
+
+    <dd>
+      <p>Nous voulons g&eacute;n&eacute;rer dynamiquement du contenu, mais le stocker ensuite
+      statiquement. La r&egrave;gle suivante va v&eacute;rifier si le fichier
+      statique existe, et le g&eacute;n&eacute;rer dans le cas contraire. Les fichiers
+      statiques peuvent &ecirc;tre supprim&eacute;s p&eacute;riodiquement, si souhait&eacute; (par exemple
+      via cron) et seront r&eacute;g&eacute;n&eacute;r&eacute;s &agrave; la demande.</p>
+    </dd>
+
+    <dt>Solution&nbsp;:</dt>
+
+    <dd>
+      Pour ce faire, on utilise le jeu de r&egrave;gles suivant&nbsp;:
+
+<pre class="prettyprint lang-config"># Cet exemple n&rsquo;est valable que dans un contexte de r&eacute;pertoire
+RewriteCond "%{REQUEST_URI}"   !-U
+RewriteRule "^(.+)\.html$"     "/regenerate_page.cgi"   [PT,L]</pre>
+
+
+    <p>L&rsquo;op&eacute;rateur <code>-U</code>  d&eacute;termine si la cha&icirc;ne de test (dans ce cas
+    <code>REQUEST_URI</code>) est un URL valable. Il effectue cette op&eacute;ration
+    via une sous-requ&ecirc;te. Si cette sous-requ&ecirc;te &eacute;choue &mdash;&nbsp;autrement dit, si la
+    ressource demand&eacute;e n&rsquo;existe pas &mdash;&nbsp;cette r&egrave;gle invoque le programme CGI
+    <code>/regenerate_page.cgi</code> qui va g&eacute;n&eacute;rer la ressource demand&eacute;e et la
+    sauvegarder dans le r&eacute;pertoire des documents de sorte qu&rsquo;une copie statique
+    puissent en &ecirc;tre servie la prochaine fois qu&rsquo;elle sera demand&eacute;e.</p>
+
+    <p>Ainsi, les documents qui ne sont pas souvent mis &agrave; jour peuvent &ecirc;tre
+    servis sous forme statique. Si ces documents doivent &ecirc;tre rafra&icirc;chis, ils
+    peuvent &ecirc;tre supprim&eacute;s du r&eacute;pertoire des documents&nbsp;; ils seront alors
+    r&eacute;g&eacute;n&eacute;r&eacute;s la prochaine fois qu&rsquo;ils seront demand&eacute;s.</p>
+    </dd>
+
+    <dt>Explication&nbsp;:</dt>
+
+    <dd>
+      <p>Les approches modernes telles que <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>, les
+      couches de mise en cache CDN ou la mise en cache au niveau de
+      l&rsquo;application fournissent des solutions plus robustes et configurables
+      pour servir du contenu statique pr&eacute;-g&eacute;n&eacute;r&eacute;. Le test de la sous-requ&ecirc;te de
+      l&rsquo;op&eacute;rateur <code>-U</code> utilis&eacute; ici induit un co&ucirc;t en performance &agrave;
+      chaque requ&ecirc;te.</p>
+    </dd>
+  </dl>
+
 </div></div>
 <div class="bottomlang">
 <p><span>Langues Disponibles: </span><a href="../de/rewrite/remapping.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
index 21c834aac45569945182fe1aaf71e9dcd559b1e2..8f8e6ccac49117e38378231651bec4fbb26204c8 100644 (file)
@@ -10,7 +10,7 @@
     <variant outdated="yes">de</variant>
     <variant>en</variant>
     <variant outdated="yes">es</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
     <variant outdated="yes">ja</variant>
     <variant outdated="yes">ko</variant>
     <variant outdated="yes">tr</variant>
index a6290e24baff361da1dedb4759e398c2b0606f1a..d186016a77ac8f8e879874dc1a11d5e37d233545 100644 (file)
@@ -32,8 +32,6 @@
 <a href="../tr/rewrite/rewritemap.html" hreflang="tr" rel="alternate" title="T&uuml;rk&ccedil;e">&nbsp;tr&nbsp;</a> |
 <a href="../zh-cn/rewrite/rewritemap.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese">&nbsp;zh-cn&nbsp;</a></p>
 </div>
-<div class="outofdate">Cette traduction peut &ecirc;tre p&eacute;rim&eacute;e. V&eacute;rifiez la version
-            anglaise pour les changements r&eacute;cents.</div>
 
 
     <p>Ce document est un compl&eacute;ment &agrave; la <a href="../mod/mod_rewrite.html">documentation de r&eacute;f&eacute;rence</a> du
     fournit des exemples pour chacun des diff&eacute;rents types de
     <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>.</p>
 
-    <div class="warning">Notez que la plupart de ces exemples ne
-    fonctionneront pas en l'&eacute;tat dans le contexte de votre configuration
-    particuli&egrave;re ; vous devez donc vous attacher &agrave; les
-    comprendre, plut&ocirc;t que de simplement les ins&eacute;rer dans votre
-    configuration par copier/coller.</div>
-
-  </div>
+      </div>
 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif"> <a href="#introduction">Introduction</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#int">int: fonction interne</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#txt">txt: tables de correspondances au format texte</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#dbm">dbm: Fichier condens&eacute; DBM</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#prg">prg: Programme de r&eacute;&eacute;criture externe</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#dbd">dbd ou fastdbd: requ&ecirc;te SQL</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#sharding">Distribution de la charge (sharding) bas&eacute;e sur l'URL entre plusieurs serveurs dorsaux</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#summary">R&eacute;sum&eacute;</a></li>
 </ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Documentation du module
-  mod_rewrite</a></li><li><a href="intro.html">Introduction &agrave; mod_rewrite</a></li><li><a href="remapping.html">Redirection et remise en
-  correspondance</a></li><li><a href="access.html">Contr&ocirc;le d'acc&egrave;s</a></li><li><a href="vhosts.html">Serveurs virtuels</a></li><li><a href="proxy.html">Mise en cache</a></li><li><a href="advanced.html">Techniques avanc&eacute;es</a></li><li><a href="avoid.html">Quand ne pas utiliser mod_rewrite</a></li></ul></div>
+  mod_rewrite</a></li><li><a href="intro.html">Introduction &agrave; mod_rewrite</a></li><li><a href="remapping.html">Redirection et remise en correspondance</a></li><li><a href="flags.html">Drapeaux des r&egrave;gles de r&eacute;&eacute;criture</a></li><li><a href="vhosts.html">Serveurs virtuels</a></li><li><a href="htaccess.html">R&eacute;&eacute;critures par r&eacute;pertoire</a></li><li><a href="avoid.html">Quand ne pas utiliser mod_rewrite</a></li><li><a href="tech.html">D&eacute;tails techniques</a></li></ul></div>
 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="introduction">Introduction <a title="Lien permanent" href="#introduction" class="permalink">&para;</a></h2>
@@ -168,7 +160,7 @@ exemples pour chacun d'entre eux.</p>
     fonction interne, et ins&eacute;rez-la dans votre <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> :
     </p>
 
-   <p> <strong>Redirection d'un URI vers une version en minuscules
+   <p> <strong>Redirection d'un chemin d&rsquo;URL vers une version en minuscules
    d'elle-m&ecirc;me</strong></p>
     <pre class="prettyprint lang-config">RewriteMap lc int:tolower
 RewriteRule "(.*)" "${lc:$1}" [R]</pre>
@@ -418,7 +410,7 @@ directive <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">R
     directive <code class="directive"><a href="../mod/core.html#mutex">Mutex</a></code>.</p>
 
     <p>Voici un exemple simple qui remplace tous les tirets par des
-    caract&egrave;res de soulignement dans l'URI de la requ&ecirc;te.</p>
+    caract&egrave;res de soulignement dans le chemin d&rsquo;URL de la requ&ecirc;te.</p>
 
     <p><strong>Configuration de la r&eacute;&eacute;criture</strong></p>
     <pre class="prettyprint lang-config">RewriteMap d2u "prg:/www/bin/dash2under.py" apache:apache
@@ -433,16 +425,49 @@ for line in sys.stdin:
     print(line.strip().replace('-', '_'), flush=True)</pre>
 
 
+    <p>Un exemple plus complet montre un motif typique pour qu&rsquo;un programme de
+    correspondance prg: lise une ligne, recherche le r&eacute;sultat et l&rsquo;affiche. La
+    sortie de diagnostic est &eacute;crite sur <code>STDERR</code> et termine sa course
+    dans le journal des erreurs de httpd.</p>
+
+    <p><strong>Configuration de la r&eacute;&eacute;criture</strong></p>
+    <pre class="prettyprint lang-config">RewriteMap vhost2docroot "prg:/www/bin/vhost_lookup.py"
+RewriteRule "^/(.*)$" "${vhost2docroot:%{HTTP_HOST}}/$1"</pre>
+
+
+    <p><strong>vhost_lookup.py</strong></p>
+    <pre class="prettyprint lang-python">#!/usr/bin/env python3
+"""Associer un nom d&rsquo;h&ocirc;te au r&eacute;pertoire racine de ses documents."""
+import sys
+
+VHOSTS = {
+    "example.com": "/srv/www/example",
+    "blog.example.com": "/srv/www/blog",
+}
+
+for line in sys.stdin:
+    host = line.strip().lower()
+    docroot = VHOSTS.get(host)
+    if docroot:
+        print(docroot, flush=True)
+    else:
+        # "NULL" indique &agrave; mod_rewrite que la recherche a &eacute;chou&eacute;
+        print("NULL", flush=True)
+        print(f"vhost_lookup: no match for {host!r}", file=sys.stderr)</pre>
+
+
 <div class="note"><h3>Mises en garde !</h3>
 <ul>
-<li>Votre programme doit &ecirc;tre le plus
-simple possible. Si le programme se bloque, httpd va attendre
-ind&eacute;finiment une r&eacute;ponse de sa part, et par cons&eacute;quent ne r&eacute;pondra plus
-aux requ&ecirc;tes.</li>
-<li>Assurez-vous de bien d&eacute;sactiver la mise en tampon dans votre
-programme. Dans l'exemple en Python ci-avant, cette op&eacute;ration s'effectue en
-passant <code>flush=True</code> &agrave; <code>print()</code>. Si les entr&eacute;es/sorties sont mises en tampon, httpd va
-attendre une sortie, et va par cons&eacute;quent se bloquer.</li>
+<li>Votre programme doit &ecirc;tre le plus simple possible. Si le programme se
+bloque, httpd va attendre ind&eacute;finiment une r&eacute;ponse de sa part, et par cons&eacute;quent
+ne r&eacute;pondra plus aux requ&ecirc;tes.</li>
+<li>Assurez-vous de bien d&eacute;sactiver la mise en tampon dans votre programme. Dans
+l'exemple en Python ci-avant, cette op&eacute;ration s'effectue en passant
+<code>flush=True</code> &agrave; <code>print()</code>. Si les entr&eacute;es/sorties sont
+mises en tampon, httpd va attendre une sortie, et va par cons&eacute;quent se bloquer.
+Il s&rsquo;agit de la cause la plus courante pour laquelle le mappage prg: semble ne
+rien faire &mdash; le programme a la r&eacute;ponse mais httpd ne la verra jamais, car
+elle est prisonni&egrave;re d&rsquo;un tampon.</li>
 <li>Rappelez-vous qu'il n'existe qu'une copie du programme lanc&eacute; au
 d&eacute;marrage du serveur, et que toutes les requ&ecirc;tes vont devoir passer par
 ce goulot d'&eacute;tranglement. Ceci peut provoquer des ralentissements
@@ -493,6 +518,75 @@ est envoy&eacute; au programme ; s'il ne s'arr&ecirc;te pas dans les 3 secondes,
 
   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
+<h2 id="sharding">Distribution de la charge (sharding) bas&eacute;e sur l'URL entre plusieurs serveurs dorsaux <a title="Lien permanent" href="#sharding" class="permalink">&para;</a></h2>
+
+  
+
+  <dl>
+    <dt>Description&nbsp;:</dt>
+
+    <dd>
+      <p>Le &laquo;&nbsp;sharding&nbsp;&raquo; est une technique courante de distribution de la charge
+      de travail ou de l&rsquo;espace de stockage. Lorsqu&rsquo;on utilise cette m&eacute;thode, un
+      serveur frontal va utiliser l&rsquo;URL pour distribuer les utilisateurs ou
+      objets &agrave; des serveurs dorsaux de mani&egrave;re coh&eacute;rente.</p>
+    </dd>
+
+    <dt>Solution&nbsp;:</dt>
+
+    <dd>
+      <p>Un mappage entre les utilisateurs et les serveurs cible est entretenu
+      dans des fichiers de mappage. Ces derniers sont sous la forme&nbsp;:</p>
+
+<div class="example"><p><code>
+utilisateur1  serveur_physique_de_utilisateur1<br>
+utilisateur2  serveur_physique_de_utilisateur2<br>
+# ... et ainsi de suite
+</code></p></div>
+
+  <p>Nous inscrivons ceci dans un fichier
+  <code>mappage.utilisateur-vers-serveur</code>. Le but est d&rsquo;associer</p>
+
+<div class="example"><p><code>
+/u/utilisateur1/chemin
+</code></p></div>
+
+  <p>&agrave;</p>
+
+<div class="example"><p><code>
+http://serveur_physique_de_utilisateur1/u/utilisateur/chemin
+</code></p></div>
+
+      <p>de sorte que tous les chemins d&rsquo;URL n&rsquo;ont pas besoin d&rsquo;&ecirc;tre valables
+      sur chaque serveur dorsal physique. Le jeu de r&egrave;gles suivant fait cela
+      pour nous avec l&rsquo;aide des fichiers de mappage, en supposant que server0
+      est un serveur par d&eacute;faut qui sera utilis&eacute; si un utilisateur n&rsquo;a pas
+      d&rsquo;entr&eacute;e dans le mappage&nbsp;:</p>
+
+<pre class="prettyprint lang-config">RewriteEngine on
+RewriteMap    users-to-hosts      "txt:/path/to/map.users-to-hosts"
+RewriteRule   "^/u/([^/]+)/?(.*)" "http://${users-to-hosts:$1|server0}/u/$1/$2"</pre>
+
+    </dd>
+
+    <dt>Discussion&nbsp;:</dt>
+
+    <dd>
+      <p>Pour distribuer les requ&ecirc;tes aux diff&eacute;rents serveurs dorsaux,
+      <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> constitue une approche plus robuste et
+      configurable, avec la prise en charge d&rsquo;un bilan de sant&eacute;, d&rsquo;une
+      pond&eacute;ration des charges et de la persistance des sessions. L&rsquo;approche
+      bas&eacute;e sur un mappage txt: pr&eacute;sent&eacute;e ici est plus simple mais ne prend pas
+      en charge ces fonctionnalit&eacute;s.</p>
+    </dd>
+  </dl>
+
+  <p>Voir la documentation de <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code> pour une description plus compl&egrave;te
+  de la syntaxe de cette directive.
+</p>
+
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
 <h2 id="summary">R&eacute;sum&eacute; <a title="Lien permanent" href="#summary" class="permalink">&para;</a></h2>
     
 
index 2c27274f5556da6aba2becabfa643eea4c5647bd..eca3342996b16131aa9db1966452f209bfb6fa94 100644 (file)
@@ -10,7 +10,7 @@
     <variant outdated="yes">de</variant>
     <variant>en</variant>
     <variant outdated="yes">es</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
     <variant outdated="yes">ja</variant>
     <variant outdated="yes">ko</variant>
     <variant outdated="yes">tr</variant>
index abe4b35546d1025814352034ca0ed6d052f2af4c..19f28caa31dee69b56f5c43fdab4253767a885f9 100644 (file)
 <a href="../tr/rewrite/tech.html" hreflang="tr" rel="alternate" title="T&uuml;rk&ccedil;e">&nbsp;tr&nbsp;</a> |
 <a href="../zh-cn/rewrite/tech.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese">&nbsp;zh-cn&nbsp;</a></p>
 </div>
-<div class="outofdate">Cette traduction peut &ecirc;tre p&eacute;rim&eacute;e. V&eacute;rifiez la version
-            anglaise pour les changements r&eacute;cents.</div>
 
 <p>Ce document passe en revue certains d&eacute;tails techniques &agrave; propos du
 module <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> et de la mise en correspondance des URLs</p>
 </div>
 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif"> <a href="#InternalAPI">Phases de l'API</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#order">Module Processing Order</a></li>
+<li><img alt="" src="../images/down.gif"> <a href="#encoding">Encodage et d&eacute;codage des URLs</a></li>
 <li><img alt="" src="../images/down.gif"> <a href="#InternalRuleset">Traitement du jeu de r&egrave;gles</a></li>
 </ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Documentation du module mod_rewrite</a></li><li><a href="intro.html">Introduction &agrave; mod_rewrite</a></li><li><a href="remapping.html">Redirection et remise en
 correspondance</a></li><li><a href="flags.html">Drapeaux de r&eacute;&eacute;criture</a></li><li><a href="vhosts.html">Serveurs virtuels</a></li><li><a href="rewritemap.html">Utilisation de RewriteMap</a></li><li><a href="htaccess.html">R&eacute;&eacute;critures en fonction du r&eacute;pertoire</a></li><li><a href="avoid.html">Quand ne pas utiliser mod_rewrite</a></li></ul></div>
@@ -80,48 +80,171 @@ correspondance</a></li><li><a href="flags.html">Drapeaux de r&eacute;&eacute;cri
     s'ex&eacute;cute au cours de la phase Fixup.</p>
 
     <p>Dans tous ces cas, <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> r&eacute;&eacute;crit le
-    <code>REQUEST_URI</code> soit vers une nouvelle URL, soit vers un
+    <code>REQUEST_URI</code> soit vers un nouvel URL, soit vers un
     nom de fichier.</p>
 
     <p>Dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de r&eacute;pertoire</a>,
-    les r&egrave;gles sont appliqu&eacute;es durant la phase "Fixup" apr&egrave;s que l'URL a &eacute;t&eacute;
-    traduite en nom de fichier. Cela modifie ce &agrave; quoi correspond le motif et la
+    les r&egrave;gles sont appliqu&eacute;es durant la phase "Fixup" apr&egrave;s que l&rsquo;URL a &eacute;t&eacute;
+    traduit en nom de fichier. Cela modifie ce &agrave; quoi correspond le motif et la
     mani&egrave;re dont les substitutions sont g&eacute;r&eacute;es. Voir le document <a href="htaccess.html#path-stripping">R&eacute;&eacute;critures en fonction du
     r&eacute;pertoire</a> pour des d&eacute;tails pratiques &agrave; propos de la suppression du
-    chemin, de RewriteBase et de la mani&egrave;re d'&eacute;viter un bouclage.</p>
+    chemin, de RewriteBase et de la mani&egrave;re d&rsquo;&eacute;viter un bouclage.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="order">Module Processing Order <a title="Lien permanent" href="#order" class="permalink">&para;</a></h2>
+
+    <p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> et <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code> agissent tous
+    les deux au cours de la phase de traduction de l&rsquo;URL en nom de fichier, mais
+    <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> op&egrave;re en premier, quel que soit l&rsquo;ordre
+    d&rsquo;apparition des directives dans le fichier de configuration. Ce
+    comportement est d&eacute;termin&eacute; par la priorit&eacute; des points d&rsquo;accroche
+    qu&rsquo;enregistre chaque module, pas par l&rsquo;ordre du code source.</p>
+
+    <p>La cons&eacute;quence pratique&nbsp;: lorsque des directives <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> et <code class="directive"><a href="../mod/mod_alias.html#redirect">Redirect</a></code> (ou <code class="directive"><a href="../mod/mod_alias.html#redirectmatch">RedirectMatch</a></code>) sont pr&eacute;sentent simultan&eacute;ment
+    dans le m&ecirc;me contexte de serveur virtuel ou global au serveur, les r&egrave;gles de
+    r&eacute;&eacute;criture sont &eacute;valu&eacute;es en premier. Si une r&egrave;gle <code>RewriteRule</code>
+    correspond et r&eacute;&eacute;crit le chemin d&rsquo;URL (ou renvoie une redirection),
+    <code>Redirect</code> ne verra jamais la requ&ecirc;te.</p>
+
+<p class="figure">
+      <img src="../images/rewrite_module_order.png" alt="Comparaison c&ocirc;te-&agrave;-c&ocirc;te des ordres d&rsquo;op&eacute;ration des modules&nbsp;: dans    un contexte global au serveur, mod_rewrite op&egrave;re en premier lors de la    phase de traduction du chemin d&rsquo;URL en nom de fichier, mod_alias    op&egrave;rant en second&nbsp;; dans un contexte de r&eacute;pertoire, mod_alias op&egrave;re en    premier lors de la phase de traduction du chemin d&rsquo;URL en nom de    fichier, mod_rewrite op&eacute;rant plus tard lors de la phase de    correction"><br>
+      <dfn>Figure&nbsp;:</dfn> Inversion de l&rsquo;ordre d&rsquo;op&eacute;ration des modules entre les
+      contextes global au serveur et de r&eacute;pertoire
+</p>
+
+    <pre class="prettyprint lang-config"># Dans cette configuration, le Redirect n&rsquo;est jamais atteint pour /old,
+# car la r&egrave;gle RewriteRule s&rsquo;applique en premier &mdash;&nbsp;m&ecirc;me si
+# Redirect appara&icirc;t plus t&ocirc;t dans le fichier.
+Redirect "/old" "http://example.com/new"
+RewriteRule "^/old" "/other" [L]</pre>
+
+
+    <div class="note"><h3>Le contexte de r&eacute;pertoire inverse l&rsquo;ordre</h3>
+    <p>Dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de r&eacute;pertoire</a>,
+    la situation est diff&eacute;rente. Les directives de <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code>
+    comme <code>Redirect</code> s&rsquo;appliquent encore dans la phase de traduction
+    de l&rsquo;URL en nom de fichier, mais les directives de
+    <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> s&rsquo;appliquent plus tard, lors de la phase de
+    correction. Cela signifie que dans un contexte de r&eacute;pertoire,
+    <code>Redirect</code> est &eacute;valu&eacute;e <em>avant</em> l&rsquo;application des
+    r&egrave;gles <code>RewriteRule</code>.</p>
+    </div>
+
+    <p>Du fait de l&rsquo;incoh&eacute;rence entre les contextes, m&eacute;langer des directives de
+    <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> et de <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code> dans la m&ecirc;me
+    port&eacute;e est une source courante de confusion. Un conseil simple&nbsp;: choisissez
+    un module pour une t&acirc;che donn&eacute;e. Si vous avez besoin de conditions de
+    r&eacute;&eacute;critures ou de comparaison de motif, utilisez exclusivement
+    <code>RewriteRule</code>. Si une simple redirection de pr&eacute;fixe suffit,
+    utilisez la directive <code>Redirect</code> et n&rsquo;ajoutez pas de r&egrave;gles de
+    r&eacute;&eacute;critures qui pourraient interagir avec elle.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
+<div class="section">
+<h2 id="encoding">Encodage et d&eacute;codage des URLs <a title="Lien permanent" href="#encoding" class="permalink">&para;</a></h2>
+
+    <p>Apache httpd supprime l&rsquo;&eacute;chappement des caract&egrave;res encod&eacute;s pour l&rsquo;URL
+    dans le chemin d&rsquo;URL de la requ&ecirc;te avant que toute comparaison de motif de
+    directive <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> ne soit
+    effectu&eacute;e. Une requ&ecirc;te pour <code>/my%20page/cats%3Fdogs</code> est d&eacute;cod&eacute;e
+    en <code>/my page/cats?dogs</code>, et c&rsquo;est &agrave; cette cha&icirc;ne d&eacute;cod&eacute;e qu&rsquo;est
+    compar&eacute; le motif de la directive <code>RewriteRule</code>.</p>
+
+    <p>Cela signifie que vous ne pouvez pas &eacute;crire un motif correspondant &agrave; la
+    forme litt&eacute;rale de l&rsquo;URL encod&eacute;. Si vous devez distinguer
+    <code>/horses%2Fponies</code> de <code>/horses/ponies</code>, utilisez la
+    variable <code>%{THE_REQUEST}</code> dans une directive <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code> &mdash;&nbsp;cette variable conserve la
+    requ&ecirc;te originelle telle qu&rsquo;elle a &eacute;t&eacute; envoy&eacute;e par le client, avant tout
+    d&eacute;codage&nbsp;:</p>
+
+<pre class="prettyprint lang-config"># Ne correspond qu&rsquo;au caract&egrave;re encod&eacute; litt&eacute;ral %2F, 
+# pas au s&eacute;parateur de chemin r&eacute;el
+RewriteCond "%{THE_REQUEST}" "/horses%2F"
+RewriteRule "^/horses/ponies$" "/special-handler" [L]</pre>
+
+
+    <p>Apr&egrave;s la substitution, <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> r&eacute;encode le chemin
+    d&rsquo;URL r&eacute;sultant en sortie. Plusieurs drapeaux permettent de contr&ocirc;ler ce
+    comportement&nbsp;:</p>
+
+    <ul>
+      <li><a href="flags.html#flag_b">[B]</a>&nbsp;: r&eacute;tablit l&rsquo;&eacute;chappement des
+      r&eacute;f&eacute;rences arri&egrave;res de fa&ccedil;on que les caract&egrave;res sp&eacute;ciaux captur&eacute;s dans le
+      chemin d&rsquo;URL d&eacute;cod&eacute; ne soient pas interpr&eacute;t&eacute;s comme des d&eacute;limiteurs dans
+      la substitution.</li>
+
+      <li><a href="flags.html#flag_bnp">[BNP]</a>&nbsp;: si [B] est actif, ce drapeau
+      encode les espaces en <code>%20</code> au lieu de <code>+</code> (convient
+      pour les &eacute;l&eacute;ments du chemin, pas pour la cha&icirc;ne de param&egrave;tres).</li>
+
+      <li><a href="flags.html#flag_ne">[NE]</a>&nbsp;: ce drapeau supprime
+      l&rsquo;&eacute;chappement par d&eacute;faut des caract&egrave;res sp&eacute;ciaux dans le r&eacute;sultat de la
+      substitution, permettant la transmission sans modification des litt&eacute;raux
+      <code>#</code>, <code>?</code> et d&rsquo;autres caract&egrave;res lors des
+      redirections externes.</li>
+    </ul>
+
+    <h3 id="allowencodedslashes">Directive AllowEncodedSlashes</h3>
+    
+
+    <p>Par d&eacute;faut, httpd renvoie un code 404 pour tout URL contenant une barre
+    oblique encod&eacute;e (<code>%2F</code>). La directive  <code class="directive"><a href="../mod/core.html#allowencodedslashes">AllowEncodedSlashes</a></code> permet de modifier ce
+    comportement&nbsp;:</p>
+
+    <ul>
+      <li><code>Off</code> (valeur par d&eacute;faut)&nbsp;: rejette <code>%2F</code> avec
+      un code 404.</li>
+      <li><code>On</code>&nbsp;: autorise <code>%2F</code> et le d&eacute;code en
+      <code>/</code> avant de le transmettre aux gestionnaires.</li>
+      <li><code>NoDecode</code>&nbsp;: autorise <code>%2F</code>, mais le conserve
+      sous sa forme encod&eacute;e de fa&ccedil;on que l&rsquo;application dorsale le distingue d&rsquo;un
+      s&eacute;parateur de chemin r&eacute;el.</li>
+    </ul>
+
+    <p>Lorsqu&rsquo;on utilise le drapeau <a href="flags.html#flag_b">[B]</a> avec des
+    URLs qui peuvent contenir des barres obliques encod&eacute;es, il est en g&eacute;n&eacute;ral
+    n&eacute;cessaire d&rsquo;utiliser <code>AllowEncodedSlashes NoDecode</code> pour &eacute;viter
+    que httpd ne rejette le r&eacute;sultat r&eacute;encod&eacute;.</p>
+
+    
 
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="InternalRuleset">Traitement du jeu de r&egrave;gles <a title="Lien permanent" href="#InternalRuleset" class="permalink">&para;</a></h2>
 
-      <p>Maintenant, quand <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> se lance dans ces deux phases de
-      l'API, il lit le jeu de r&egrave;gles configur&eacute;es depuis la structure
-      contenant sa configuration (qui a &eacute;t&eacute; elle-m&ecirc;me cr&eacute;&eacute;e soit au
-      d&eacute;marrage d'Apache pour le contexte du serveur, soit lors du
-      parcours des r&eacute;pertoires par le noyau d'Apache pour le contexte de
-      r&eacute;pertoire). Puis le moteur de r&eacute;&eacute;criture est d&eacute;marr&eacute; avec le jeu
-      de r&egrave;gles contenu (une ou plusieurs r&egrave;gles associ&eacute;es &agrave; leurs
-      conditions). En lui-m&ecirc;me, le mode op&eacute;ratoire du moteur de
-      r&eacute;&eacute;criture d'URLs est exactement le m&ecirc;me dans les deux contextes
-      de configuration. Seul le traitement du r&eacute;sultat final diff&egrave;re.</p>
-
-      <p>L'ordre dans lequel les r&egrave;gles sont d&eacute;finies est important car
-      le moteur de r&eacute;&eacute;criture les traite selon une chronologie
-      particuli&egrave;re (et pas tr&egrave;s &eacute;vidente). Le principe est le suivant :
-      le moteur de r&eacute;&eacute;criture traite les r&egrave;gles (les directives <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>) les unes
-      &agrave; la suite des autres, et lorsqu'une r&egrave;gle s'applique, il parcourt
-      les &eacute;ventuelles conditions (directives
-      <code>RewriteCond</code>directives) associ&eacute;es.
-      Pour des raisons historiques, les
-      conditions pr&eacute;c&egrave;dent les r&egrave;gles, si bien que le d&eacute;roulement du
-      contr&ocirc;le est un peu compliqu&eacute;. Voir la figure 1 pour plus de
-      d&eacute;tails.</p>
+      <p>Maintenant, quand <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> se lance dans ces deux
+      phases de l'API, il lit le jeu de r&egrave;gles configur&eacute; depuis la structure
+      contenant sa configuration (qui a &eacute;t&eacute; elle-m&ecirc;me cr&eacute;&eacute;e soit au d&eacute;marrage
+      d'Apache httpd pour le contexte du serveur, soit lors du parcours des
+      r&eacute;pertoires par le noyau d'Apache httpd pour le contexte de r&eacute;pertoire).
+      Puis le moteur de r&eacute;&eacute;criture est d&eacute;marr&eacute; avec le jeu de r&egrave;gles contenu
+      (une ou plusieurs r&egrave;gles associ&eacute;es &agrave; leurs conditions). En lui-m&ecirc;me, le
+      mode op&eacute;ratoire du moteur de r&eacute;&eacute;criture d'URLs est exactement le m&ecirc;me dans
+      les deux contextes de configuration. Seul le traitement du r&eacute;sultat final
+      diff&egrave;re.</p>
+
 <p class="figure">
-      <img src="../images/rewrite_process_uri.png" alt="Flux des comparaisons des directives RewriteRule et RewriteCond"><br>
-      <dfn>Figure 1:</dfn>D&eacute;roulement du contr&ocirc;le &agrave; travers le jeu de
-      r&egrave;gles de r&eacute;&eacute;criture
+      <img src="../images/mod_rewrite_fig1.png" alt="Survol du processus de r&eacute;&eacute;criture par requ&ecirc;te lors des phases par    serveur et par r&eacute;pertoire"><br>
+      <dfn>Figure 1&nbsp;:</dfn>Le processus de r&eacute;&eacute;criture par requ&ecirc;te montrant les
+      deux phases du traitement des r&egrave;gles (par serveur et par r&eacute;pertoire)
 </p>
-      <p>L'URL est tout d'abord compar&eacute;e au
+
+      <p>L'ordre dans lequel les r&egrave;gles sont d&eacute;finies est important car le
+      moteur de r&eacute;&eacute;criture les traite selon une chronologie particuli&egrave;re (et pas
+      tr&egrave;s &eacute;vidente). Le principe est le suivant : le moteur de r&eacute;&eacute;criture
+      traite les r&egrave;gles (les directives <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>) les unes &agrave; la suite des
+      autres, et lorsqu'une r&egrave;gle s'applique, il parcourt les &eacute;ventuelles
+      conditions (directives <code>RewriteCond</code>directives) associ&eacute;es.
+      Pour des raisons historiques, les conditions pr&eacute;c&egrave;dent les r&egrave;gles, si bien
+      que le d&eacute;roulement du contr&ocirc;le est un peu compliqu&eacute;. Voir la figure 2 pour
+      plus de d&eacute;tails.</p>
+<p class="figure">
+      <img src="../images/rewrite_process_uri.png" alt="Organigramme montrant le flux de contr&ocirc;le par r&egrave;gle&nbsp;: pour chaque    r&egrave;gle, comparaison du motif avec l&rsquo;URL, &eacute;valuation des conditions    RewriteCond, application de la substitution si les deux op&eacute;rations    pr&eacute;c&eacute;dentes ont r&eacute;ussi, puis consultation des drapeaux pour d&eacute;terminer    si l&rsquo;on doit arr&ecirc;ter le traitement ou continuer avec la r&egrave;gle    suivante"><br>
+      <dfn>Figure 2&nbsp;:</dfn>Le flux de contr&ocirc;le en parcourant le jeu de r&egrave;gles de
+      r&eacute;&eacute;criture
+</p>
+      <p>L'URL est tout d'abord compar&eacute; au
       <em>Mod&egrave;le</em> de chaque r&egrave;gle. Lorsqu'une r&egrave;gle ne s'applique
       pas, <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> stoppe imm&eacute;diatement le traitement de cette r&egrave;gle
       et passe &agrave; la r&egrave;gle suivante. Si l'URL correspond au
@@ -146,6 +269,15 @@ correspondance</a></li><li><a href="flags.html">Drapeaux de r&eacute;&eacute;cri
       satisfaites, le traitement de la r&egrave;gle en cours se poursuit avec
       le remplacement de l'URL par la cha&icirc;ne de <em>Substitution</em>.</p>
 
+<p class="figure">
+      <img src="../images/mod_rewrite_fig2.png" alt="Flux des r&eacute;f&eacute;rences arri&egrave;res entre les directives RewriteRule et    RewriteCond"><br>
+      <dfn>Figure 3&nbsp;:</dfn>Le flux des r&eacute;f&eacute;rences arri&egrave;res dans une r&egrave;gle
+      Tout d&rsquo;abord, le motif de la r&egrave;gle RewriteRule est compar&eacute;&nbsp;; ses captures
+      ($1...$9) sont disponibles dans toutes les cha&icirc;nes de test des conditions
+      RewriteCond. Les derni&egrave;res captures du motif de la condition qui
+      correspondent (%1...%9) sont disponibles dans la substitution.
+</p>
+
 </div></div>
 <div class="bottomlang">
 <p><span>Langues Disponibles: </span><a href="../de/rewrite/tech.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
index 417d90cca9e4eabb7007b90a1c3d301a7bfa780c..fcd58378437bdce52551506e4630ae328394754a 100644 (file)
@@ -10,7 +10,7 @@
     <variant outdated="yes">de</variant>
     <variant>en</variant>
     <variant outdated="yes">es</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
     <variant outdated="yes">ja</variant>
     <variant outdated="yes">ko</variant>
     <variant outdated="yes">tr</variant>
index 49d08f2823a69cc84e304bd3d9fa53dbba7b861b..2a55ce217350dd1a395b85e58973e115bf96209d 100644 (file)
@@ -32,8 +32,6 @@
 <a href="../tr/rewrite/vhosts.html" hreflang="tr" rel="alternate" title="T&uuml;rk&ccedil;e">&nbsp;tr&nbsp;</a> |
 <a href="../zh-cn/rewrite/vhosts.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese">&nbsp;zh-cn&nbsp;</a></p>
 </div>
-<div class="outofdate">Cette traduction peut &ecirc;tre p&eacute;rim&eacute;e. V&eacute;rifiez la version
-            anglaise pour les changements r&eacute;cents.</div>
 
 
 <p>Ce document est un compl&eacute;ment &agrave; la <a href="../mod/mod_rewrite.html">documentation de r&eacute;f&eacute;rence</a> du module
@@ -55,7 +53,7 @@ virtuels via <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite<
 <li><img alt="" src="../images/down.gif"> <a href="#xtra-conf">Utilisation d'un fichier de configuration
 du serveur virtuel s&eacute;par&eacute;</a></li>
 </ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Documentation du module</a></li><li><a href="intro.html">Introduction &agrave; mod_rewrite</a></li><li><a href="remapping.html">Redirection et remise en
-correspondance</a></li><li><a href="access.html">Contr&ocirc;le d'acc&egrave;s</a></li><li><a href="proxy.html">Serveurs mandataires</a></li><li><a href="rewritemap.html">Utilisation de RewriteMap</a></li><li><a href="advanced.html">Techniques avanc&eacute;es</a></li><li><a href="avoid.html">Quand ne pas utiliser mod_rewrite</a></li></ul></div>
+correspondance</a></li><li><a href="htaccess.html">R&eacute;&eacute;critures dans un contexte de r&eacute;pertoire</a></li><li><a href="flags.html">Drapeaux de la r&egrave;gle RewriteRule</a></li><li><a href="rewritemap.html">Utilisation de RewriteMap</a></li><li><a href="avoid.html">Quand ne pas utiliser mod_rewrite</a></li><li><a href="tech.html">D&eacute;tails techniques</a></li></ul></div>
 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="per-hostname">Serveurs virtuels pour des noms d'h&ocirc;tes arbitraires <a title="Lien permanent" href="#per-hostname" class="permalink">&para;</a></h2>
index b54e21cb34afc36d505302ae14db53ad3e4082f1..3850862b00b8113fc5259aac8acccf6bd355b2da 100644 (file)
@@ -10,7 +10,7 @@
     <variant outdated="yes">de</variant>
     <variant>en</variant>
     <variant outdated="yes">es</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
     <variant outdated="yes">ja</variant>
     <variant outdated="yes">ko</variant>
     <variant outdated="yes">tr</variant>
index 5adf99314d33e5a203c1d051039c512a7859fcfe..c21251fe96fb082fe1458cdb869c18dc3d18d1ea 100644 (file)
@@ -29,8 +29,6 @@
 <a href="./ko/suexec.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
 <a href="./tr/suexec.html" hreflang="tr" rel="alternate" title="T&uuml;rk&ccedil;e">&nbsp;tr&nbsp;</a></p>
 </div>
-<div class="outofdate">Cette traduction peut &ecirc;tre p&eacute;rim&eacute;e. V&eacute;rifiez la version
-            anglaise pour les changements r&eacute;cents.</div>
 
     <p>La fonctionnalit&eacute; <strong>suEXEC</strong> permet
     l'ex&eacute;cution des programmes <strong>CGI</strong> et
index 57a8173940c92a4f48b79e9dda0a268e1db8158a..3b7b1e8915df058b96c28e6780bdc173d012781e 100644 (file)
@@ -8,7 +8,7 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
     <variant outdated="yes">ja</variant>
     <variant outdated="yes">ko</variant>
     <variant outdated="yes">tr</variant>