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

39 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_log_config.html.fr.utf8
docs/manual/mod/mod_log_config.xml.meta
docs/manual/mod/mod_macro.html.fr.utf8
docs/manual/mod/mod_macro.xml.meta
docs/manual/mod/mod_proxy_scgi.html.fr.utf8
docs/manual/mod/mod_proxy_scgi.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/access.html.fr.utf8
docs/manual/rewrite/access.xml.meta
docs/manual/rewrite/advanced.html.fr.utf8
docs/manual/rewrite/advanced.xml.meta
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/index.html.fr.utf8
docs/manual/rewrite/index.xml.meta
docs/manual/rewrite/proxy.html.fr.utf8
docs/manual/rewrite/proxy.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 662a12b867baa275f30a278ae174baeee7af877d..b55b786fc98a8115a5834524227ae59a7e1de78a 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 032d337873a880c18da235cf6fabb2c9bef8902a..5da948dd3df0d3317500c7a25f5d1ffff2609889 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,10 @@ 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 f26c3249c96e64c5291ffb643d9bf9635e609e43..ab0831254f07d13a5d09f90141016b383f670625 100644 (file)
@@ -32,8 +32,6 @@
 <a href="../ko/mod/mod_log_config.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
 <a href="../tr/mod/mod_log_config.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>
 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Journalisation des requ&ecirc;tes envoy&eacute;es au
 serveur</td></tr>
 <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Base</td></tr>
@@ -563,7 +561,7 @@ CustomLog "referer.log" referer env=!localreferer</pre>
 <div class="directive-section"><h2 id="globallog">Directive <span id="GlobalLog">GlobalLog</span> <a title="Lien permanent" href="#globallog" class="permalink">&para;</a></h2>
 <table class="directive">
 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>D&eacute;finit le nom et le format du fichier journal</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>GlobalLog<var>file</var>|<var>pipe</var>
+<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>GlobalLog <var>file</var>|<var>pipe</var>
 <var>format</var>|<var>nickname</var>
 [env=[!]<var>environment-variable</var>|
 expr=<var>expression</var>]</code></td></tr>
@@ -652,7 +650,7 @@ journal</td></tr>
     sp&eacute;cifi&eacute;, c'est le Common Log Format qui sera utilis&eacute;.</p>
 
     <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">LogFormat "%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\" \"%{User-agent}i\""
-TransferLog logs/access_log</pre>
+TransferLog "logs/access_log"</pre>
 </div>
 
 </div>
index 483caf85ed3d15b3f67bd734feb1b5a3086e1c7e..d3f68096ba3c77b6ba107f4856e955d93c450ce7 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>
index 1b0a35186e843ecbb9880e85fb48476a8f56b551..4a8973871a4351a3346a278cd249a25821f61be1 100644 (file)
@@ -29,8 +29,6 @@
 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_macro.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/mod/mod_macro.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 permet d'utiliser des macros dans les fichiers
 de configuration Apache.</td></tr>
 <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Base</td></tr>
@@ -134,10 +132,13 @@ l'&eacute;valuation des expressions. Si cela se produit, c'est le nom de
 param&egrave;tre le plus long possible qui sera utilis&eacute;.</p>
 
 <p>Si vous d&eacute;sirez ins&eacute;rer une valeur dans une cha&icirc;ne, il est conseill&eacute;
-de l'entourer d'accolades afin d'&eacute;viter toute confusion :</p>
+de l'entourer de parenth&egrave;ses afin d'&eacute;viter toute confusion. La syntaxe
+<code>$(...)</code> doit &ecirc;tre utilis&eacute;e &agrave; la place de la syntaxe
+<code>${...}</code>, car cette derni&egrave;re entre en conflit avec la syntaxe de la
+variable <code class="directive"><a href="../mod/core.html#define">Define</a></code>&nbsp;:</p>
 
-<pre class="prettyprint lang-config">&lt;Macro DocRoot ${docroot}&gt;
-    DocumentRoot "/var/www/${docroot}/htdocs"
+<pre class="prettyprint lang-config">&lt;Macro DocRoot $(docroot)&gt;
+    DocumentRoot "/var/www/$(docroot)/htdocs"
 &lt;/Macro&gt;</pre>
 
 
index 5454b3cb284bdad1f4dffe2502275cb4e620ea4b..2e26ebcdf4eb18cc2fe1def0434617b60131dfae 100644 (file)
@@ -8,6 +8,6 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
   </variants>
 </metafile>
index 65a94502b2f701605866561cddd6f2f106831f69..f38bc7ed2a6a41ee1255bd6a228c46506e702e71 100644 (file)
@@ -29,8 +29,6 @@
 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_proxy_scgi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/mod/mod_proxy_scgi.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>Module fournissant le support de la passerelle SCGI &agrave;
 <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></td></tr>
 <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
index 2f16230aa2030c08a0705372db5f70ac56fb7a3e..a125bc5adeb39f83f50896d3626a1701f1592c5d 100644 (file)
@@ -8,6 +8,6 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
   </variants>
 </metafile>
index 4b1c2bba011f64cb333d63704bd5bee731f01455..4acb8cc6947afd9b2b93f6846a23fa4643d77379 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>
@@ -46,28 +44,26 @@ r&egrave;gles permettant de r&eacute;&eacute;crire les URLs des requ&ecirc;tes
       avec le syst&egrave;me de fichiers. Cependant, on peut aussi l'utiliser
       pour rediriger une URL vers une autre URL, ou pour invoquer une
       requ&ecirc;te interne &agrave; destination du mandataire.</p>
-      <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,
-      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, y
-      compris la partie chemin. Une r&egrave;gle de r&eacute;&eacute;criture peut &ecirc;tre
-      invoqu&eacute;e dans <code>httpd.conf</code> ou dans un fichier
-      <code>.htaccess</code>. 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>
-
-      <p>Une expression rationnelle ne n&eacute;cessite des guillemets que si elle
-      contient des espaces non prot&eacute;g&eacute;es, auquel cas les guillemets simples ou
-      doubles sont &eacute;quivalents.</p>
-
-      <p>Vous trouverez d'avantage de d&eacute;tails, discussions et exemples
-      dans la
-      <a href="../rewrite/">documentation d&eacute;taill&eacute;e
-      sur mod_rewrite</a>.</p>
+      
+      <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 <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>. 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>
 <div id="quickview"><h3>Sujets</h3>
 <ul id="topics">
@@ -81,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>
@@ -101,24 +100,23 @@ r&egrave;gles permettant de r&eacute;&eacute;crire les URLs des requ&ecirc;tes
       sup&eacute;rieur &agrave; <code>trace2</code> qu'&agrave; des fins de d&eacute;bogage !
     </div>
 
-    <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">LogLevel alert rewrite:trace3</pre>
+        <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">LogLevel alert rewrite:trace3</pre>
 </div>
 
     <div class="note"><h3>RewriteLog</h3>
       <p>Ceux qui sont familiers avec les versions pr&eacute;c&eacute;dentes de
       <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>. Elles ont &eacute;t&eacute; en effet remplac&eacute;es
-      par une configuration de la journalisation par module, comme
-      mentionn&eacute; plus haut.
-      </p>
+      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&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;
       <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, affichez le fichier journal en
       redirigeant la sortie vers grep :</p>
-    <div class="example"><p><code>
-    tail -f error_log|fgrep '[rewrite:'
-    </code></p></div>
+
+        <div class="example"><pre class="prettyprint lang-sh">tail -f error_log|fgrep '[rewrite:'</pre>
+</div>
     </div>
 
 </div>
@@ -134,25 +132,22 @@ r&eacute;pertoire</td></tr>
 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
 </table>
-      <p>La directive <code class="directive">RewriteBase</code> permet de
-      sp&eacute;cifier le pr&eacute;fixe d'URL &agrave; utiliser dans un contexte de
-      r&eacute;pertoire (htaccess) pour les directives
-      <code class="directive"><a href="#rewriterule">RewriteRule</a></code> qui r&eacute;&eacute;crivent vers un chemin
+      <p>La directive <code class="directive">RewriteBase</code> permet de sp&eacute;cifier le
+      pr&eacute;fixe d'URL &agrave; utiliser dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de
+      r&eacute;pertoire</a> (htaccess) pour les directives <code class="directive"><a href="#rewriterule">RewriteRule</a></code> qui r&eacute;&eacute;crivent vers un chemin
       relatif.</p>
-      <p>Cette directive est <em>obligatoire</em> si vous utilisez un
-      chemin relatif dans une substitution, et dans un contexte de
-      r&eacute;pertoire (htaccess), sauf si au moins une de ces conditions est
-      v&eacute;rifi&eacute;e :</p>
+      <p>Cette directive est <em>obligatoire</em> si vous utilisez un chemin
+      relatif dans une substitution, et dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de r&eacute;pertoire</a> (htaccess), sauf si
+      au moins une de ces conditions est v&eacute;rifi&eacute;e :</p>
       <ul>
           <li>La requ&ecirc;te initiale, ainsi que la substitution, se
          situent par raport &agrave; la valeur de la directive
          <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 du syst&egrave;me de fichiers vers le r&eacute;pertoire
-         contenant la <code class="directive"><a href="#rewriterule">RewriteRule</a></code>, suffix&eacute; par
-         la substitution relative est aussi valide en tant qu'URL sur
-         le serveur (ce qui est rare).</li>
+         <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,
          cette directive peut &ecirc;tre omise lorsque la requ&ecirc;te est mise en
          correspondance avec le syst&egrave;me de fichiers via la directive
@@ -160,22 +155,6 @@ r&eacute;pertoire</td></tr>
          <code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code>.</li>
       </ul>
 
-<p>Dans l'exemple ci-dessous, la directive
-<code class="directive">RewriteBase</code> est n&eacute;cessaire afin d'&eacute;viter une
-r&eacute;&eacute;criture en http://example.com/opt/myapp-1.2.3/welcome.html car la
-ressource n'&eacute;tait pas relative &agrave; la racine des documents. Cette erreur
-de configuration aurait conduit le serveur &agrave; rechercher un r&eacute;pertoire
-"opt" &agrave; la racine des documents.</p>
-
-<pre class="prettyprint lang-config">DocumentRoot "/var/www/example.com"
-AliasMatch "^/myapp" "/opt/myapp-1.2.3"
-&lt;Directory "/opt/myapp-1.2.3"&gt;
- RewriteEngine On
-    RewriteBase "/myapp/"
-    RewriteRule "^index\.html$"  "welcome.html"
-&lt;/Directory&gt;</pre>
-
-
 
 </div>
 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
@@ -185,7 +164,7 @@ AliasMatch "^/myapp" "/opt/myapp-1.2.3"
 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>
@@ -199,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>
           
@@ -256,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>
@@ -317,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 <a href="http://www.ietf.org/rfc/rfc3875">sp&eacute;cification de
-               CGI</a>.</p>
+               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>
         
@@ -394,6 +420,12 @@ la r&eacute;&eacute;criture soit effectu&eacute;e
                  <code>REQUEST_URI</code> a d&eacute;j&agrave; &eacute;t&eacute; %-d&eacute;cod&eacute;e ; pour la
                  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&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.
                  </dd>
 
                   <dt><code>THE_REQUEST</code></dt>
@@ -406,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>".
@@ -483,104 +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 contexte de
-       r&eacute;pertoire (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>
+
+      <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><em>expression_de_comparaison</em> est une expression
+      <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
-      <em>expression rationnelle compatible perl</em>, mais vous
+      <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   :
+      <p><a id="rewritecond-stringcomp" name="rewritecond-stringcomp"></a><strong>Comparaisons de cha&icirc;nes</strong></p>
 
-         <dl>
+      <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
@@ -590,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>
@@ -648,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
@@ -692,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;
@@ -714,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>
 
@@ -744,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 :
 
@@ -780,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
@@ -791,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
@@ -821,7 +855,7 @@ RewriteRule  "^/$"                 "/homepage.std.html"  [L]</pre>
        l'absence d'un op&eacute;rateur logique <strong><code>OU</code></strong>,
        l'ensemble du jeu de r&egrave;gles est abandonn&eacute; et les conditions restantes ne
        sont pas &eacute;valu&eacute;es.
-        </p>
+        </p> 
 
 
 </div>
@@ -1145,7 +1179,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>
@@ -1159,10 +1193,13 @@ 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">expression rationnelle</a>
-      compatible perl. 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><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>
 
@@ -1172,17 +1209,19 @@ pour le moteur de r&eacute;&eacute;criture</td></tr>
       &eacute;ventuellement accompagn&eacute; du port, et la cha&icirc;ne de param&egrave;tres (par
       exemple "/app1/index.html"). Il s'agit du <a href="directive-dict.html#Syntax">URL-path</a> d&eacute;cod&eacute; de sa valeur "%xx".</p></li>
 
-      <li><p>Dans un contexte de r&eacute;pertoire (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
+      <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>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 l'endroit o&ugrave; la directive
-      <code class="directive">RewriteRule</code> est d&eacute;finie.</p>
+      "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 o&ugrave; la r&egrave;gle est d&eacute;fini 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" de l'endroit o&ugrave; la r&egrave;gle est d&eacute;finie.</p>
+      <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&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
@@ -1201,35 +1240,34 @@ pour le moteur de r&eacute;&eacute;criture</td></tr>
       
 </div>
 
-<div class="note"><h3>R&eacute;&eacute;critures dans un contexte de r&eacute;pertoire</h3>
+<div class="note"><h3>R&eacute;&eacute;critures dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de r&eacute;pertoire</a></h3>
 <ul>
 <li>L'utilisation du moteur de r&eacute;&eacute;criture dans les
 fichiers <a href="../howto/htaccess.html">.htaccess</a> et les sections
 <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> est un peu plus
 complexe.</li>
 
-<li>Pour activer le moteur de r&eacute;&eacute;criture dans ces contextes, vous devez
-d&eacute;finir "<code>RewriteEngine On</code>" <strong>et</strong>
-"<code>Options FollowSymLinks</code>". Si l'administrateur a d&eacute;sactiv&eacute;
-la possibilit&eacute; de modifier l'option <code>FollowSymLinks</code> au
-niveau du r&eacute;pertoire d'un utilisateur, vous ne pouvez pas utiliser le
-moteur de r&eacute;&eacute;criture. Cette restriction a &eacute;t&eacute; instaur&eacute;e &agrave; des fins de
-s&eacute;curit&eacute;.</li>
+<li>Pour activer le moteur de r&eacute;&eacute;criture dans ces contextes, vous devez d&eacute;finir
+<code>RewriteEngine On</code> <strong>et</strong> au moins une des <code class="directive"><a href="../mod/core.html#options">Options</a></code> <code>FollowSymLinks</code> ou
+<code>SymLinksIfOwnerMatch</code> doit &ecirc;tre activ&eacute;e. Notez que ces options ne
+peuvent &ecirc;tre d&eacute;finies dans un fichier de configuration distribu&eacute;
+(<code>.htaccess</code>) que si une directive <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> le permet dans la configuration du
+serveur.</li>
 
 <li>Voir la directive
 <code class="directive"><a href="#rewritebase">RewriteBase</a></code> pour plus de d&eacute;tails &agrave;
 propos de l'ajout du pr&eacute;fixe apr&egrave;s les substitutions relatives.</li>
 
 <li>Si vous souhaitez effectuer une comparaison en prenant en compte
-l'int&eacute;gralit&eacute; du
-chemin de l'URL dans un contexte de r&eacute;pertoire (htaccess), vous devez
-utiliser la variable <code>%{REQUEST_URI}</code> dans la directive
-<code class="directive"><a href="#rewritecond">RewriteCond</a></code>.</li>
+l'int&eacute;gralit&eacute; du chemin de l'URL dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte
+de r&eacute;pertoire</a> (htaccess), vous devez utiliser la variable
+<code>%{REQUEST_URI}</code> dans la directive <code class="directive"><a href="#rewritecond">RewriteCond</a></code>.</li>
 
-<li>Le prefixe supprim&eacute; se termine toujours par un slash, ce qui
-signifie que la comparaison s'effectue avec une cha&icirc;ne qui ne comporte
-<em>jamais</em> de slash de d&eacute;but. Ainsi, un <em>mod&egrave;le</em> contenant
-<code>^/</code> ne correspondra jamais dans un contexte de r&eacute;pertoire.</li>
+<li>Le prefixe supprim&eacute; se termine toujours par un slash, ce qui signifie que la
+comparaison s'effectue avec une cha&icirc;ne qui ne comporte <em>jamais</em> de slash
+de d&eacute;but. Ainsi, un <em>mod&egrave;le</em> contenant <code>^/</code> ne correspondra
+jamais dans un <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte de
+r&eacute;pertoire</a>.</li>
 
 <li>Bien que les r&egrave;gles de r&eacute;&eacute;criture soient permises du point de vue de
 la syntaxe 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> (y compris leurs versions sous forme
@@ -1250,9 +1288,9 @@ exemple l'option <em>Inherit</em>.</li>
 permet aussi de contr&ocirc;ler le comportement des sections d&eacute;finies au m&ecirc;me niveau
 d'imbrication dans la configuration. Dans l'exemple suivant, par d&eacute;faut seule la
 r&egrave;gle RewriteRules d&eacute;finie dans le second bloc <code class="directive"><a href="../mod/core.html#if">If</a></code> est prise en compte car celle d&eacute;finie dans le
-premier bloc est &eacute;cras&eacute;e. D&eacute;finir <code class="directive"><a href="#rewriteoptions">RewriteOptions</a></code> Inherit force mod_rewrite &agrave;
-combiner les deux sections en prenant en compte les deux r&egrave;gles et pas seulement
-la derni&egrave;re.</li>
+premier bloc est &eacute;cras&eacute;e. D&eacute;finir <code class="directive"><a href="#rewriteoptions">RewriteOptions</a></code> Inherit force mod_rewrite &agrave; combiner
+les deux sections en prenant en compte les deux r&egrave;gles et pas seulement la
+derni&egrave;re.</li>
 </ul>
 <div class="example"><pre class="prettyprint lang-config">&lt;If "true"&gt;
   # Sans RewriteOptions Inherit, cette r&egrave;gle est &eacute;cras&eacute;e par celle de la section
@@ -1266,63 +1304,37 @@ la 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>
 
         <dt>un chemin du syst&egrave;me de fichiers</dt>
 
-        <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. Les substitutions ne sont trait&eacute;es en tant que chemins du
-       syst&egrave;me de fichiers que si la r&egrave;gle est configur&eacute;e dans un
-       contexte de serveur (serveur virtuel), et si le premier
-       composant du chemin dans la substitution existe dans le syst&egrave;me
-       de fichiers.</dd>
+       <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&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
+       r&eacute;pertoire</a>, la question ne se pose pas.</dd>
 
         <dt>chemin d'URL</dt>
 
         <dd>Un chemin relatif &agrave; la valeur de <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> vers la ressource qui
-       doit &ecirc;tre servie. Notez que <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
-       essaie de deviner si vous avez sp&eacute;cifi&eacute; un chemin du syst&egrave;me
-       de fichiers ou un chemin d'URL en v&eacute;rifiant si la premi&egrave;re
-       partie du chemin existe &agrave; la racine du syst&egrave;me de fichiers.
-       Par exemple, si vous avez sp&eacute;cifi&eacute; comme cha&icirc;ne de
-       <em>Substitution</em> <code>/www/file.html</code>, cette
-       derni&egrave;re sera trait&eacute;e comme un chemin d'URL <em>&agrave; moins</em>
-       qu'un r&eacute;pertoire nomm&eacute; <code>www</code> n'existe &agrave; la racine
-       de votre syst&egrave;me de fichiers (ou dans le cas d'une
-       r&eacute;&eacute;criture au sein d'un fichier <code>.htaccess</code>,
-       relativement &agrave; la racine des documents), auquel cas la cha&icirc;ne de
-       substitution sera trait&eacute;e comme un chemin du syst&egrave;me de
-       fichiers. Si vous d&eacute;sirez que d'autres directives de
+       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&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
        chemin d'URL r&eacute;sultant, utilisez le drapeau <code>[PT]</code>
        comme d&eacute;crit ci-dessous.</dd>
@@ -1350,6 +1362,30 @@ substitution !
 
       </dl>
 
+      <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&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&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&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&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&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&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>
+
       <p>En plus du texte, la cha&icirc;ne <em>Substitution</em> peut
       comporter :</p>
 
@@ -1364,19 +1400,25 @@ 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>
 
       <p>Les r&eacute;f&eacute;rences arri&egrave;res sont des identificateurs de la forme
-      <code>$</code><strong>N</strong> (<strong>N</strong>=0..9), qui
-      seront remplac&eacute;s par le contenu du <strong>N</strong>&egrave;me groupe
-      du <em>Mod&egrave;le</em> qui correspondait. Les variables du serveur
-      sont les m&ecirc;mes que dans la <em>Cha&icirc;ne_de_test</em> d'une
-      directive <code class="directive"><a href="#rewritecond">RewriteCond</a></code>. Les
-      fonctions de comparaison sont issues de la directive <code class="directive"><a href="#rewritemap">RewriteMap</a></code> dans la
-      section de laquelle elles sont d&eacute;crites. Ces trois types de
-      variables sont &eacute;valu&eacute;es dans l'ordre ci-dessus.</p>
+      <code>$</code><strong>N</strong> (<strong>N</strong>=0..9).
+      <code>$0</code> correspond &agrave; la cha&icirc;ne enti&egrave;re correspondant au
+      <em>motif</em>, alors que <code>$1</code>..<code>$9</code> correspondent
+      aux groupes correspondants captur&eacute;s depuis le <em>motif</em>
+      correspondant. De m&ecirc;me, les r&eacute;f&eacute;rences arri&egrave;res
+      <code>%0</code>..<code>%9</code> correspondent aux <em>motifs de condition
+      </em> de <code class="directive"><a href="#rewritecond">RewriteCond</a></code>
+      correspondants les plus r&eacute;cents&nbsp;: <code>%0</code> repr&eacute;sente une
+      correspondance compl&egrave;te et <code>%1</code>..<code>%9</code> les groupes
+      captur&eacute;s. Les variables du serveur sont les m&ecirc;mes que dans la
+      <em>Cha&icirc;ne_de_test</em> d'une directive <code class="directive"><a href="#rewritecond">RewriteCond</a></code>. Les fonctions de comparaison
+      sont issues de la directive <code class="directive"><a href="#rewritemap">RewriteMap</a></code> dans la section de laquelle
+      elles sont d&eacute;crites. Ces trois types de variables sont &eacute;valu&eacute;es dans
+      l'ordre ci-dessus.</p>
 
        <p>Chaque r&egrave;gle de r&eacute;&eacute;criture s'applique au r&eacute;sultat de la r&egrave;gle
        pr&eacute;c&eacute;dente, selon l'ordre dans lequel elles ont &eacute;t&eacute; d&eacute;finies dans
@@ -1407,10 +1449,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>
@@ -1420,7 +1462,7 @@ substitution !
     </tr>
 <tr>
         <td>B</td>
-        <td>Echappe les caract&egrave;res non-alphanum&eacute;riques dans les r&eacute;f&eacute;rences
+       <td>Echappe les caract&egrave;res non-alphanum&eacute;riques dans les r&eacute;f&eacute;rences
        arri&egrave;res <em>avant</em> d'appliquer la transformation. Pour un
        &eacute;chappement similaire des variables du serveur, voir la <a href="#mapfunc">fonction de mappage</a> "escape".<em><a href="../rewrite/flags.html#flag_b">d&eacute;tails ...</a></em></td>
     </tr>
@@ -1464,11 +1506,10 @@ substitution !
     </tr>
 <tr class="odd">
         <td>END</td>
-        <td>Stoppe le processus de r&eacute;&eacute;criture imm&eacute;diatement et
-       n'applique plus aucune r&egrave;gle. Emp&ecirc;che aussi l'application
-       ult&eacute;rieure de r&egrave;gles de r&eacute;&eacute;criture dans les contextes de
-       r&eacute;pertoire et de fichier .htaccess (disponible &agrave; partir de la
-       version 2.3.9 du serveur HTTP Apache). <em><a href="../rewrite/flags.html#flag_end">d&eacute;tails ...</a></em></td>
+       <td>Stoppe le processus de r&eacute;&eacute;criture imm&eacute;diatement et n'applique plus
+       aucune r&egrave;gle. Emp&ecirc;che aussi l'application ult&eacute;rieure de r&egrave;gles de
+       r&eacute;&eacute;criture dans les contextes de <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">r&eacute;pertoire</a> et de fichier .htaccess
+       (disponible &agrave; partir de la version 2.3.9 du serveur HTTP Apache). <em><a href="../rewrite/flags.html#flag_end">d&eacute;tails ...</a></em></td>
     </tr>
 <tr>    
         <td>env|E=[!]<em>VAR</em>[:<em>VAL</em>]</td>
@@ -1492,10 +1533,10 @@ substitution !
     </tr>
 <tr>
         <td>last|L</td>
-        <td>Arr&ecirc;te le processus de r&eacute;&eacute;criture imm&eacute;diatement et n'applique
-       plus aucune r&egrave;gle. Pr&ecirc;tez une attention particuli&egrave;re aux mises
-       en garde concernant les contextes de niveau r&eacute;pertoire et
-       .htaccess (voir aussi le drapeau END). <em><a href="../rewrite/flags.html#flag_l">d&eacute;tails ...</a></em></td>
+       <td>Arr&ecirc;te le processus de r&eacute;&eacute;criture imm&eacute;diatement et n'applique plus
+       aucune r&egrave;gle. Pr&ecirc;tez une attention particuli&egrave;re aux mises en garde
+       concernant les contextes de niveau <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">r&eacute;pertoire</a> (voir aussi le drapeau END).
+       <em><a href="../rewrite/flags.html#flag_l">d&eacute;tails ...</a></em></td>
     </tr>
 <tr class="odd">
         <td>next|N</td>
@@ -1569,7 +1610,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>
@@ -1577,7 +1618,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.4.60 du serveur HTTP Apache.
@@ -1588,8 +1629,8 @@ substitution !
         <td>
        Emp&ecirc;che la fusion des slashes de d&eacute;but multiples tels que ceux utilis&eacute;s
        dans les chemins UNC de Windows.
-        <em><a href="../rewrite/flags.html#flag_unc">d&eacute;tails ...</a></em><br>
-        Disponible &agrave; partir de la version 2.4.62 du serveur HTTP Apache.
+        <em><a href="../rewrite/flags.html#flag_unc">details ...</a></em><br>
+        Disponible &agrave; partir de la version 2.4.62 du serveur HTTP Apache. 
         </td>
     </tr>
 </table>
@@ -1607,11 +1648,8 @@ utilis&eacute; dans la directive <code class="directive">RewriteRule</code></p>
      <p>Voici toutes les combinaisons de substitution et leurs
      significations :</p>
 
-      <p><strong>Dans la configuration au niveau du serveur principal
-      (<code>httpd.conf</code>)<br>
-       pour la requ&ecirc;te ``<code>GET
-      /chemin/infochemin</code>'':</strong><br>
-      </p>
+      <p><strong>En dehors de la configuration au niveau du <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">r&eacute;pertoire</a> pour la requ&ecirc;te ``<code>GET
+      /chemin/infochemin</code>'':</strong><br> </p>
 
 <table class="bordered"><tr class="header">
 <th>R&egrave;gle</th>
@@ -1668,13 +1706,10 @@ redondant)</td>
 </tr>
 </table>
 
-      <p><strong>Dans une configuration de niveau r&eacute;pertoire pour
-      <code>/chemin</code><br>
-       (<code>/chemin/physique/vers/chemin/.htacccess</code>, avec
-      <code>RewriteBase "/chemin"</code>)<br>
-       pour la requ&ecirc;te ``<code>GET
-      /chemin/chemin-local/infochemin</code>'':</strong><br>
-     </p>
+      <p><strong>Dans une configuration de niveau <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">r&eacute;pertoire</a> pour <code>/chemin</code><br>
+      (par exemple, <code>.htaccess</code> ou <code>&lt;Directory&gt;</code>,
+      avec <code>RewriteBase "/chemin"</code>)<br> pour la requ&ecirc;te ``<code>GET
+      /chemin/chemin-local/infochemin</code>'':</strong><br> </p>
 
 <table class="bordered"><tr class="header">
 <th>R&egrave;gle</th>
index 0be21e86f4d3e241aa6b35fcdd36de7efe6541b7..decc0a7b1e85192770cea6f795335aaa7841b0f0 100644 (file)
@@ -8,6 +8,6 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
   </variants>
 </metafile>
index cd747534297af1603e1c367e1c819941a45c1960..d9106ca43137015e9311b6106d21b7ce9d2e36eb 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,26 +191,24 @@ 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 utilisant l'alphabet <code>[A-Za-z0-9_-]</code>
-    (<code>[A-Za-z0-9@-]</code>) avant la version 2.4.47) 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 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 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> comme un
-    symbole opaque, qui peut &ecirc;tre compar&eacute; avec d'autres
-    <code>UNIQUE_ID</code>s en ne testant que leur &eacute;galit&eacute;.</p>
+    <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 (avant la version 2.4.47, <code>[A-Za-z0-9@-]</code>), et sa valeur
+    se pr&eacute;sente 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 : 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> comme un symbole opaque, qui peut &ecirc;tre compar&eacute; avec
+    d'autres <code>UNIQUE_ID</code>s en ne testant que leur &eacute;galit&eacute;.</p>
 
     <p>L'ordre a &eacute;t&eacute; choisi de fa&ccedil;on &agrave; ce qu'il soit possible de
     modifier le codage dans le futur sans avoir &agrave; se pr&eacute;occuper de
@@ -232,12 +231,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 f50b508a5e342646d4f44b1e79c21043d9eb606a..fd206dc238272709315dc563c499e2e2b1b8e9fd 100644 (file)
@@ -593,7 +593,7 @@ n'est pas trouv&eacute;</td></tr>
 <tr><td><a href="core.html#forcetype">ForceType <var>type m&eacute;dium</var>|None</a></td><td></td><td>dh</td><td>C</td></tr><tr><td class="descr" colspan="4">Force le type de m&eacute;dium sp&eacute;cifi&eacute; dans le champ d'en-t&ecirc;te
 HTTP Content-Type pour les fichiers correspondants</td></tr>
 <tr class="odd"><td><a href="mod_log_forensic.html#forensiclog">ForensicLog <var>nom-fichier</var>|<var>pipe</var></a></td><td></td><td>sv</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">D&eacute;finit le nom de fichier du journal l&eacute;gal</td></tr>
-<tr><td><a href="mod_log_config.html#globallog" id="G" name="G">GlobalLog<var>file</var>|<var>pipe</var>
+<tr><td><a href="mod_log_config.html#globallog" id="G" name="G">GlobalLog <var>file</var>|<var>pipe</var>
 <var>format</var>|<var>nickname</var>
 [env=[!]<var>environment-variable</var>|
 expr=<var>expression</var>]</a></td><td></td><td>s</td><td>B</td></tr><tr><td class="descr" colspan="4">D&eacute;finit le nom et le format du fichier journal</td></tr>
@@ -1219,7 +1219,7 @@ pas.</td></tr>
 <tr class="odd"><td><a href="mod_rewrite.html#rewritebase">RewriteBase <em>chemin_URL</em></a></td><td></td><td>dh</td><td>E</td></tr><tr class="odd"><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><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><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><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 class="odd"><td><a href="mod_rewrite.html#rewriteengine">RewriteEngine on|off</a></td><td> off </td><td>svdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Active ou d&eacute;sactive l'ex&eacute;cution du
@@ -1230,7 +1230,7 @@ recherche de mots-cl&eacute;s</td></tr>
 <tr class="odd"><td><a href="mod_rewrite.html#rewriteoptions">RewriteOptions <var>Options</var></a></td><td></td><td>svdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Configure certaines options sp&eacute;ciales
 pour le moteur de r&eacute;&eacute;criture</td></tr>
 <tr><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><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><td class="descr" colspan="4">D&eacute;finit les r&egrave;gles pour le moteur de r&eacute;&eacute;criture</td></tr>
 <tr class="odd"><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 class="odd"><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><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><td class="descr" colspan="4">Limite la m&eacute;moire allou&eacute;e aux processus initi&eacute;s par les
index e3c247be608e7f10216821b781c1e91fcc3a43b9..5b0399887dfce123793e11249d512d6f3b505353 100644 (file)
@@ -14,7 +14,7 @@
 </script>
 
 <link href="../images/favicon.png" rel="shortcut icon"></head>
-<body id="manual-page"><div id="page-header">
+<body id="manual-page" class="no-sidebar"><div id="page-header">
 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p>
 <p class="apache">Serveur HTTP Apache Version 2.4</p>
 <img alt="" src="../images/feather.png"></div>
 <p><span>Langues Disponibles: </span><a href="../en/rewrite/access.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/rewrite/access.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>
 
-
-<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
-<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>. Il explique comment utiliser
-<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> pour contr&ocirc;ler l'acc&egrave;s &agrave; diverses
-ressources, ainsi que d'autres techniques en rapport. 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 class="warning">Ce document est obsol&egrave;te. Son contenu a &eacute;t&eacute; r&eacute;organis&eacute; dans
+le document <a href="avoid.html">Quand ne pas utiliser mod_rewrite</a>, car les
+recettes qui &eacute;taient d&eacute;crites sont appliqu&eacute;es de mani&egrave;re plus efficace en
+utilisant d&rsquo;autres fonctionnalit&eacute;s de httpd. Il sera supprim&eacute; dans une prochaine
+version de cette documentation.</div>
+
+<ul>
+<li><strong>Interdiction du hotlinking d&rsquo;images</strong> - Voir
+    <a href="avoid.html#blocked-inline-images">Quand ne pas utiliser mod_rewrite</a></li>
+<li><strong>Blocage des robots</strong> - Voir
+    <a href="avoid.html#blocking-of-robots">Quand ne pas utiliser mod_rewrite</a></li>
+<li><strong>Interdire les h&ocirc;tes enregistr&eacute;s dans une liste de rejet</strong> -
+Voir
+    <a href="avoid.html#host-deny">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="#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">Rejet des clients contenus dans une liste de proscrits</a></li>
-<li><img alt="" src="../images/down.gif"> <a href="#referer-deflector">Aiguillage bas&eacute; sur l'en-t&ecirc;te Referer</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="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 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>Cette technique vous permet d'interdire &agrave; d'autres sites
-         d'inclure directement vos images dans leurs pages. On fait
-         souvent r&eacute;f&eacute;rence &agrave; cette pratique sous le nom de
-         r&eacute;f&eacute;rencement &agrave; chaud (Hotlinking) qui entra&icirc;ne l'utilisation
-         de votre bande passante pour servir des contenus faisant
-         partie du site de quelqu'un d'autre.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-       <p>Cette technique repose sur la valeur de la variable
-       optionnelle <code>HTTP_REFERER</code>. Certaines personnes
-       pourront donc contourner cette limitation. Pour la plupart des
-       utilisateurs cependant, la requ&ecirc;te &eacute;chouera, en ce sens que
-       l'image ne sera pas affich&eacute;e depuis le site tiers.</p>
-       <p>Il y a plusieurs mani&egrave;res de g&eacute;rer cette situation.</p>
-
-       <p>Dans le premier exemple, nous rejetons tout simplement la
-       requ&ecirc;te si elle ne provenait pas d'une page appartenant &agrave; notre
-       site. Pour les besoins de cet exemple, nous supposons que le nom
-       de votre site est <code>www.example.com</code>.</p>
-
-
-
-<pre class="prettyprint lang-config">RewriteCond "%{HTTP_REFERER}" "!^$"
-RewriteCond "%{HTTP_REFERER}" "!www.example.com" [NC]
-RewriteRule "\.(gif|jpg|png)$"    "-"   [F,NC]</pre>
-
-
-       <p>Dans le second exemple, plut&ocirc;t que de rejeter la requ&ecirc;te,
-       nous affichons une autre image &agrave; la place.</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>
-
-
-       <p>Dans le troisi&egrave;me exemple, nous redirigeons la requ&ecirc;te vers
-       une image appartenant &agrave; un autre site.</p>
-
-<pre class="prettyprint lang-config">RewriteCond "%{HTTP_REFERER}" "!^$"
-RewriteCond "%{HTTP_REFERER}" "!www.example.com" [NC]
-RewriteRule "\.(gif|jpg|png)$" "http://other.example.com/image.gif"   [R,NC]</pre>
-
-
-       <p>De tous ces exemples, les deux derniers semblent les plus
-       efficaces pour faire en sorte que les gens arr&ecirc;tent de
-       r&eacute;f&eacute;rencer vos images &agrave; chaud, car il ne verront pas les images
-       qu'ils s'attendent &agrave; voir.</p>
-
-        </dd>
-
-        <dt>Discussion :</dt>
-
-        <dd>
-        <p>Si vous ne voulez pas rediriger la requ&ecirc;te, mais
-       simplement interdire l'acc&egrave;s &agrave; la ressource, vous pouvez y
-       parvenir sans utiliser <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> :</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>
-      </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 :</dt>
-
-        <dd>
-        <p>
-        Dans cet exemple, nous allons discuter d'une m&eacute;thode permettant
-       de bloquer les requ&ecirc;tes persistentes en provenance d'un robot
-       particulier, ou d'un navigateur.</p>
-
-        <p>La m&eacute;thode classique pour exclure un robot consiste &agrave; d&eacute;finir
-       un fichier, <code>/robots.txt</code> qui sp&eacute;cifie les parties de
-       votre site web pour lesquelles vous voulez exclure les robots.
-       Malheureusement, certains robots ne tiennent pas compte de ces
-       fichiers.
-        </p>
-
-        <p>Notez qu'il existe des m&eacute;thodes d'exclusion qui n'utilisent
-       pas <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>. Notez aussi que toute technique qui repose sur
-       le contenu de la cha&icirc;ne client <code>USER_AGENT</code> peut &ecirc;tre
-       contourn&eacute;e tr&egrave;s facilement car cette cha&icirc;ne peut &ecirc;tre modifi&eacute;e.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-        <p>On utilise un jeu de r&egrave;gles qui sp&eacute;cifie le r&eacute;pertoire &agrave;
-       prot&eacute;ger, ainsi que la cha&icirc;ne client <code>USER_AGENT</code> qui
-       identifie le robot malin ou envahissant.</p>
-
-        <p>Dans cet exemple, nous bloquons un robot nomm&eacute;
-       <code>Vilain_Robot</code> pour le r&eacute;pertoire
-       <code>/secret/fichiers</code>. Si vous voulez bloquer ce client
-       seulement depuis une source particuli&egrave;re, vous pouvez aussi
-       sp&eacute;cifier un intervalle d'adresses IP.</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>
-
-      <dt>Discussion :</dt>
-
-      <dd>
-      <p>
-        Vous pouvez cependant parvenir au m&ecirc;me r&eacute;sultat sans utiliser
-       <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> via la m&eacute;thode alternative suivante :
-      </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>
-
-      <p>
-      Comme indiqu&eacute; plus haut, il est ais&eacute; de contourner cette
-      technique, simplement en modifiant le contenu de l'en-t&ecirc;te
-      <code>USER_AGENT</code>. Si vous subissez une attaque en r&egrave;gle,
-      vous allez devoir r&eacute;fl&eacute;chir &agrave; un blocage &agrave; un niveau sup&eacute;rieur,
-      par exemple une r&egrave;gle de filtrage de votre pare-feu.
-      </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="host-deny">Rejet des clients contenus dans une liste de proscrits <a title="Lien permanent" href="#host-deny" class="permalink">&para;</a></h2>
-
-  
-
-  <dl>
-    <dt>Description :</dt>
-
-    <dd>
-      <p>Nous voulons interdire l'acc&egrave;s &agrave; notre serveur aux clients
-      contenus dans une liste de proscrits similaire &agrave;
-      <code>hosts.deny</code>.</p>
-    </dd>
-
-    <dt>Solution :</dt>
-
-    <dd>
-<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>
-
-
-<div class="example"><p><code>
-##<br>
-##  hosts.deny<br>
-##<br>
-##  ATTENTION! Ceci est une table de correspondances, non une liste,<br>
-##             m&ecirc;me si elle est trait&eacute;e comme telle. mod_rewrite<br>
-##             l'interpr&egrave;te comme une liste de paires cl&eacute;/valeur, et<br>
-##             chaque entr&eacute;e doit au moins poss&eacute;der une valeur par<br>
-##             d&eacute;faut "-".<br>
-<br>
-193.102.180.41 -<br>
-bsdti1.sdm.de  -<br>
-192.76.162.40  -<br>
-</code></p></div>
-    </dd>
-
-    <dt>Discussion :</dt>
-    <dd>
-    <p>
-    La seconde condition RewriteCond pr&eacute;suppose que HostNameLookups est
-    d&eacute;fini &agrave; On, de fa&ccedil;on &agrave; ce que les adresses IP des clients puissent
-    &ecirc;tre r&eacute;solues. Dans le cas contraire, vous devez supprimer la
-    seconde condition, ainsi que le drapeau <code>[OR]</code> de la
-    premi&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="referer-deflector">Aiguillage bas&eacute; sur l'en-t&ecirc;te Referer <a title="Lien permanent" href="#referer-deflector" class="permalink">&para;</a></h2>
-
-  
-
-  <dl>
-    <dt>Description :</dt>
-
-    <dd>
-      <p>Redirige les requ&ecirc;tes en fonction du Referer de provenance de
-      la requ&ecirc;te, avec des cibles diff&eacute;rentes pour chaque Referer.</p>
-    </dd>
-
-    <dt>Solution :</dt>
-
-    <dd>
-  <p>Le jeu de r&egrave;gles suivant utilise un fichier de correspondances pour
-  associer chaque Referer &agrave; une cible de redirection.</p>
-
-<pre class="prettyprint lang-config">RewriteMap  deflector "txt:/path/to/deflector.map"
-
-RewriteCond "%{HTTP_REFERER}" !=""
-RewriteCond "${deflector:%{HTTP_REFERER}}" "=-"
-RewriteRule "^" "%{HTTP_REFERER}" [R,L]
-
-RewriteCond "%{HTTP_REFERER}" !=""
-RewriteCond "${deflector:%{HTTP_REFERER}|NOT-FOUND}" "!=NOT-FOUND"
-RewriteRule "^" "${deflector:%{HTTP_REFERER}}" [R,L]</pre>
-
-
-      <p>Le fichier de correspondances contient les cibles de
-      redirection associ&eacute;es &agrave; chaque Referer, ou, si nous voulons
-      simplement rediriger les requ&ecirc;tes vers leur Referer, un "-" est
-      inscrit dans le fichier de correspondances :</p>
-
-<pre class="prettyprint lang-config">##
-##  deflector.map
-##
-
-http://badguys.example.com/bad/index.html    -
-http://badguys.example.com/bad/index2.html   -
-http://badguys.example.com/bad/index3.html   http://somewhere.example.com/</pre>
-
-
-    </dd>
-  </dl>
-
-</div></div>
+</div>
 <div class="bottomlang">
 <p><span>Langues Disponibles: </span><a href="../en/rewrite/access.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/rewrite/access.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a></p>
index 8ffc1d8a497a994f77c4d8441c8d5befcf61d26c..cda0183580c79b171a88d0c317a617d973ae87f4 100644 (file)
@@ -8,6 +8,6 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
   </variants>
 </metafile>
index 4872656541181fffa6d1b81b69f59d5c73c37492..5d1bc06294dd007f73048ff22f82e8a75dd0bb69 100644 (file)
@@ -14,7 +14,7 @@
 </script>
 
 <link href="../images/favicon.png" rel="shortcut icon"></head>
-<body id="manual-page"><div id="page-header">
+<body id="manual-page" class="no-sidebar"><div id="page-header">
 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p>
 <p class="apache">Serveur HTTP Apache Version 2.4</p>
 <img alt="" src="../images/feather.png"></div>
 <p><span>Langues Disponibles: </span><a href="../en/rewrite/advanced.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/rewrite/advanced.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>
 
 
-<p>Ce document compl&egrave;te 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 pr&eacute;sente un certain nombre
-    de techniques avanc&eacute;es quant &agrave;
-    l'utilisation de <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.</p>
-
-<div class="warning">Notez que la plupart des exemples ne fonctionneront
-pas en l'&eacute;tat dans la configuration particuli&egrave;re de votre serveur ; il
-est donc important de bien comprendre leur fonctionnement, plut&ocirc;t que de
-simplement les copier/coller dans votre configuration.</div>
+<div class="warning">Ce document est obsol&egrave;te. Son contenu a &eacute;t&eacute; r&eacute;parti entre
+les documents d&rsquo;actualit&eacute; suivants, o&ugrave; l&rsquo;on trouvera en parall&egrave;le des recettes
+et exemples en rapport. Il sera supprim&eacute; dans une future version de cette
+documentation.</div>
+
+<ul>
+<li><strong>Partitionnement bas&eacute; sur l'URL</strong> - Voir
+    <a href="rewritemap.html#sharding">Utilisation de RewriteMap</a></li>
+<li><strong>R&eacute;g&eacute;n&eacute;ration de contenu &agrave; la vol&eacute;e</strong> - Voir
+    <a href="remapping.html#on-the-fly-content">Redirection et remappage</a></li>
+<li><strong>R&eacute;partition de charge</strong> - Voir
+    <a href="avoid.html#load-balancing">Quand ne pas utiliser mod_rewrite</a></li>
+<li><strong>R&eacute;pertoires utilisateur structur&eacute;s</strong> - Voir
+    <a href="remapping.html#structuredhomedirs">Redirection et remappage</a></li>
+<li><strong>Redirection des ancres</strong> - Voir
+    <a href="remapping.html#redirectanchors">Redirection et remappage</a></li>
+<li><strong>R&eacute;&eacute;criture en fonction du temps</strong> - Voir
+    <a href="remapping.html#time-dependent">Redirection et remappage</a></li>
+<li><strong>D&eacute;finir des variables d&rsquo;environnement en fonction de l&rsquo;URL</strong>
+- Voir
+    <a href="flags.html#flag_e">Drapeaux de RewriteRule</a></li>
+</ul>
 
 </div>
-<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif"> <a href="#sharding">Distribution de la charge entre plusieurs serveurs
-  d'arri&egrave;re-plan en fonction de l'adresse IP</a></li>
-<li><img alt="" src="../images/down.gif"> <a href="#on-the-fly-content">R&eacute;g&eacute;neration de contenu &agrave; la vol&eacute;e</a></li>
-<li><img alt="" src="../images/down.gif"> <a href="#load-balancing">R&eacute;partition de charge</a></li>
-<li><img alt="" src="../images/down.gif"> <a href="#structuredhomedirs">R&eacute;pertoires Home structur&eacute;s</a></li>
-<li><img alt="" src="../images/down.gif"> <a href="#redirectanchors">Redirection des ancrages</a></li>
-<li><img alt="" src="../images/down.gif"> <a href="#time-dependent">R&eacute;&eacute;criture d&eacute;pendant de l'heure</a></li>
-<li><img alt="" src="../images/down.gif"> <a href="#setenvvars">D&eacute;finir des variables d'environnement en fonction de
-      certaines parties de l'URL</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;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="avoid.html">Quand ne pas utiliser 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="sharding">Distribution de la charge entre plusieurs serveurs
-  d'arri&egrave;re-plan en fonction de l'adresse IP <a title="Lien permanent" href="#sharding" class="permalink">&para;</a></h2>
-
-  
-
-  <dl>
-    <dt>Description :</dt>
-
-    <dd>
-      <p>La fragmentation ou "sharding" est une technique courante de
-      distribution de la charge du serveur ou de l'espace de stockage.
-      Quand on utilise cette m&eacute;thode, un serveur frontal utilise l'URL
-      pour r&eacute;partir de mani&egrave;re appropri&eacute;e les utilisateurs et objets
-      entre diff&eacute;rents serveurs d'arri&egrave;re-plan.</p>
-    </dd>
-
-    <dt>Solution :</dt>
-
-    <dd>
-      <p>On maintient une table de correspondance entre utilisateurs et
-      serveurs cibles dans des fichiers externes. Ces derniers se
-      pr&eacute;sentent comme suit :</p>
-
-<div class="example"><p><code>
-utilisateur1  serveur_physique_utilisateur1<br>
-utilisateur2  serveur_physique_utilisateur2<br>
-# etc ...
-</code></p></div>
-
-  <p>Tout ceci est enregistr&eacute; dans un fichier
-  <code>correspondances-utilisateurs-serveurs</code>. Le but est de
-  faire correspondre</p>
-
-<div class="example"><p><code>
-/u/utilisateur1/chemin
-</code></p></div>
-
-  <p>avec</p>
-
-<div class="example"><p><code>
-http://serveur_physique_utilisateur1/u/utilisateur/chemin
-</code></p></div>
-
-      <p>il n'est ainsi pas n&eacute;cessaire que tous les chemins URL soient
-      valides sur tous les serveurs physiques d'arri&egrave;re-plan. Le jeu de
-      r&egrave;gles suivant fait tout ceci pour nous, en s'appuyant sur les
-      fichiers de correspondances, en supposant que serveur0 est un
-      serveur par d&eacute;faut qui sera utilis&eacute; lorsqu'un utilisateur ne
-      poss&egrave;dera pas d'entr&eacute;e dans la table de correspondances :</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>
-  </dl>
-
-  <p>Voir la documentation de <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code> et le <a href="./rewritemap.html">RewriteMap HowTo</a> pour une description plus
-  approfondie 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="on-the-fly-content">R&eacute;g&eacute;neration de contenu &agrave; la vol&eacute;e <a title="Lien permanent" href="#on-the-fly-content" class="permalink">&para;</a></h2>
-
-  
-
-  <dl>
-    <dt>Description :</dt>
-
-    <dd>
-      <p>Nous voulons g&eacute;n&eacute;rer du contenu de mani&egrave;re dynamique, mais le
-      conserver de mani&egrave;re statique lorsqu'il a &eacute;t&eacute; g&eacute;n&eacute;r&eacute;. La r&egrave;gle
-      suivante v&eacute;rifie l'existence du fichier statique, et le g&eacute;n&egrave;re
-      s'il est absent. Les fichiers statiques peuvent &ecirc;tre supprim&eacute;s
-      p&eacute;riodiquement si on le d&eacute;sire (par exemple via cron), et seront
-      r&eacute;g&eacute;n&eacute;r&eacute;s &agrave; la demande.</p>
-    </dd>
-
-    <dt>Solution :</dt>
-
-    <dd>
-      A cet effet, on utilise le jeu de r&egrave;gles suivant :
-
-<pre class="prettyprint lang-config"># Cet exemple n'est valable que dans un contexte de r&eacute;pertoire
-RewriteCond "%{REQUEST_URI}"   "!-U"
-RewriteRule "^(.+)\.html$"     "/regenerate_page.cgi"   [PT,L]</pre>
-
-
-      <p>L'op&eacute;rateur <code>-U</code> permet de d&eacute;terminer si la cha&icirc;ne
-      de test (dans ce cas <code>REQUEST_URI</code>) est une URL valide.
-      Pour ce faire, il utilise une sous-requ&ecirc;te. Si cette sous-requ&ecirc;te
-      &eacute;choue, ou en d'autres termes, si la ressource demand&eacute;e n'existe pas,
-      cette r&egrave;gle invoque le programme CGI
-      <code>/regenerate_page.cgi</code> qui g&eacute;n&egrave;re la ressource
-      demand&eacute;e et la sauvegarde dans le r&eacute;pertoire des documents, de
-      fa&ccedil;on &agrave; ce qu'une copie statique puisse &ecirc;tre servie lors d'une
-      demande ult&eacute;rieure.</p>
-
-    <p>De cette fa&ccedil;on, les documents qui ne sont pas mis &agrave; jour
-    r&eacute;guli&egrave;rement peuvent &ecirc;tre servis sous une forme statique. Si ces
-    documents doivent &ecirc;tre r&eacute;actualis&eacute;s, on peut les supprimer du
-    r&eacute;pertoire des documents, et ils seront ainsi r&eacute;g&eacute;n&eacute;r&eacute;s &agrave; la
-    prochaine demande.</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="load-balancing">R&eacute;partition de charge <a title="Lien permanent" href="#load-balancing" class="permalink">&para;</a></h2>
-
-  
-
-  <dl>
-    <dt>Description :</dt>
-
-    <dd>
-      <p>Nous voulons r&eacute;partir la charge de mani&egrave;re al&eacute;atoire entre
-      plusieurs serveurs en utilisant <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.</p>
-    </dd>
-
-    <dt>Solution :</dt>
-
-    <dd>
-      <p>Pour y parvenir, nous allons utiliser la directive <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code> et une liste de
-      serveurs.</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>liste-serveurs.txt</code> contiendra la liste des serveurs :</p>
-
-<div class="example"><p><code>
-## liste-serveurs.txt<br>
-<br>
-serveurs un.example.com|deux.example.com|trois.example.com<br>
-</code></p></div>
-
-<p>Si vous voulez qu'un serveur se voit confier d'avantage de charge que
-les autres, faites le figurer plusieurs fois dans la liste.</p>
-
-   </dd>
-
-   <dt>Discussion</dt>
-   <dd>
-<p>Apache poss&egrave;de un module de r&eacute;partition de charge -
-<code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> - beaucoup plus souple et pr&eacute;sentant
-plus de fonctionnalit&eacute;s dans ce domaine que <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="structuredhomedirs">R&eacute;pertoires Home structur&eacute;s <a title="Lien permanent" href="#structuredhomedirs" class="permalink">&para;</a></h2>
-
-  
-
-  <dl>
-    <dt>Description :</dt>
-
-    <dd>
-      <p>Certains sites avec des milliers d'utilisateurs organisent
-         les r&eacute;pertoires utilisateurs de mani&egrave;re structur&eacute;e, c'est &agrave;
-         dire que chaque r&eacute;pertoire utilisateur se trouve dans un
-         sous-r&eacute;pertoire dont le nom commence (par exemple) par le
-         premier caract&egrave;re du nom de l'utilisateur. Ainsi,
-         <code>/~larry/chemin</code> correspond &agrave;
-         <code>/home/<strong>l</strong>/larry/public_html/chemin</code>, alors
-         que <code>/~waldo/chemin</code> correspond &agrave;
-         <code>/home/<strong>w</strong>/waldo/public_html/chemin</code>.</p>
-    </dd>
-
-    <dt>Solution :</dt>
-
-    <dd>
-      <p>On utilise le jeu de r&egrave;gles suivant pour d&eacute;velopper les
-         URLs avec tilde selon l'organisation structur&eacute;e pr&eacute;c&eacute;dente.</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>
-  </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 des ancrages <a title="Lien permanent" href="#redirectanchors" class="permalink">&para;</a></h2>
-
-  
-
-  <dl>
-    <dt>Description :</dt>
-
-    <dd>
-    <p>Par d&eacute;faut, la redirection vers un ancrage 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
-       transformant en <code>%23</code>, ce qui rend la redirection
-       inop&eacute;rante.</p>
-    </dd>
-
-    <dt>Solution :</dt>
-
-    <dd>
-      <p>On utilise le drapeau <code>[NE]</code> dans la r&egrave;gle
-         <code>RewriteRule</code>. NE signifie "No Escape".
-      </p>
-    </dd>
-
-    <dt>Discussion :</dt>
-    <dd>Cette technique fonctionne bien entendu pour tout autre
-    caract&egrave;re sp&eacute;cial que <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, par d&eacute;faut, code pour insertion
-    dans une URL.</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 de l'heure <a title="Lien permanent" href="#time-dependent" class="permalink">&para;</a></h2>
-
-  
-
-  <dl>
-    <dt>Description :</dt>
-
-    <dd>
-      <p>Nous voulons servir des contenus diff&eacute;rents selon l'heure du
-      jour en utilisant <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.</p>
-    </dd>
-
-    <dt>Solution :</dt>
-
-    <dd>
-      <p>Il existe de nombreuses variables nomm&eacute;es
-         <code>TIME_xxx</code> utilisables dans les conditions de
-         r&eacute;&eacute;criture. Utilis&eacute;es en conjonction avec les mod&egrave;les de
-         comparaison lexicographique sp&eacute;ciaux <code>&lt;STRING</code>,
-         <code>&gt;STRING</code> et <code>=STRING</code>, elles
-         permettent d'effectuer des redirections d&eacute;pendant de
-         l'heure :</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>Avec cet exemple, l'URL <code>foo.html</code> renvoie
-         le contenu de <code>foo.jour.html</code> durant le
-         cr&eacute;neau horaire <code>07:01-18:59</code>, et le contenu de
-         <code>foo.nuit.html</code> le reste du temps.</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 ainsi afficher une des deux pages en dehors de
-       la fen&ecirc;tre de temps configur&eacute;e. On peut utiliser
-       <code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code> pour contourner ce probl&egrave;me. Il est
-       cependant bien plus commode de servir un contenu dynamique, et
-       de le personnaliser en fonction de l'heure du jour.</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="setenvvars">D&eacute;finir des variables d'environnement en fonction de
-      certaines parties de l'URL <a title="Lien permanent" href="#setenvvars" class="permalink">&para;</a></h2>
-
-  
-
-  <dl>
-    <dt>Description :</dt>
-
-    <dd>
-      <p>Nous voulons parfois conserver une certaine forme de statut
-      lorsqu'une r&eacute;&eacute;criture a eu lieu. Par exemple, vous souhaitez
-      consigner le fait que cette r&eacute;&eacute;criture a eu lieu, et vous servir
-      plus tard de cette information pour d&eacute;terminer si une requ&ecirc;te &eacute;tait
-      concern&eacute;e par cette r&eacute;&eacute;criture. Pour ce faire, on peut utiliser
-      une variable d'environnement.</p>
-    </dd>
-
-    <dt>Solution :</dt>
-
-    <dd>
-      <p>Utiliser le drapeau [E] pour d&eacute;finir une variable
-      d'environnement.</p>
-
-<pre class="prettyprint lang-config">RewriteEngine on
-RewriteRule   "^/cheval/(.*)"   "/poney/$1" [E=<strong>rewritten:1</strong>]</pre>
-
-
-    <p>Plus loin dans votre jeu de r&egrave;gles, vous pouvez v&eacute;rifier le
-    contenu de cette variable d'environnement via une directive
-    RewriteCond :</p>
-
-<pre class="prettyprint lang-config">RewriteCond "%{ENV:rewritten}" "=1"</pre>
-
-
-    <p>Notez que les variables d'environnement ne survivent pas &agrave; une
-    redirection externe. Vous devez alors utiliser le drapeau [CO] pour d&eacute;finir
-    un cookie. Pour les redirections de niveau r&eacute;pertoire et htaccess o&ugrave; la
-    substitution finale est trait&eacute;e en tant que redirection interne, les
-    variables d'environnement du tour de r&eacute;&eacute;criture pr&eacute;c&eacute;dent sont pr&eacute;fix&eacute;es par
-    "REDIRECT_".</p>
-
-    </dd>
-  </dl>
-
-</div></div>
+</div>
 <div class="bottomlang">
 <p><span>Langues Disponibles: </span><a href="../en/rewrite/advanced.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/rewrite/advanced.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a></p>
index 907cc2406d5f8645525bf762b6c1f13e51973731..98192e701877451ef3fad04dc15f3f5fd1e04848 100644 (file)
@@ -8,6 +8,6 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
   </variants>
 </metafile>
index d564b4631ccfd691d6d8f3827d706befd4e0339c..df716289a648935199b3dbb95b451b66bb3fc973 100644 (file)
@@ -26,8 +26,6 @@
 <p><span>Langues Disponibles: </span><a href="../en/rewrite/avoid.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/rewrite/avoid.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>
 
 
 <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
@@ -58,11 +56,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>
@@ -95,51 +101,38 @@ rediriger toutes les URLs de niveaux inf&eacute;rieurs comme
 <p>Pour rediriger les URLs sous <code>/un</code> vers
 <code>http://un.example.com/</code>, utilisez cette d&eacute;finition :</p>
 
-<pre class="prettyprint lang-config">Redirect /one/ http://one.example.com/</pre>
+<pre class="prettyprint lang-config">Redirect "/one/" "http://one.example.com/"</pre>
 
 
 <p>Pour rediriger un nom d'h&ocirc;te vers un autre nom d'h&ocirc;te, par exemple
 <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>
@@ -155,31 +148,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>
@@ -211,6 +179,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>
@@ -228,7 +213,7 @@ directive <code class="directive"><a href="../mod/core.html#if">&lt;If&gt;</a></
 suit :</p>
 
 <pre class="prettyprint lang-config">&lt;If "req('Host') != 'www.example.com'"&gt;
-    Redirect "/" "http://www.example.com"
+    Redirect "/" "http://www.example.com/"
 &lt;/If&gt;</pre>
 
 
@@ -242,6 +227,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="../en/rewrite/avoid.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
index 405691d6afdac15a8a350f21394095642d2e90a5..9d51904e7ba4e9ebe97a0d41df9da5f173c74222 100644 (file)
@@ -8,6 +8,6 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
   </variants>
 </metafile>
index d26678d3e584510b378f36655fec302fb1ed9257..682ca99879fca5f1ae2feac98f7718e36923dd0e 100644 (file)
 <p><span>Langues Disponibles: </span><a href="../en/rewrite/flags.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/rewrite/flags.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>
 
 <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>
@@ -64,7 +63,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>
@@ -83,14 +82,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>
@@ -158,6 +289,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
@@ -175,6 +310,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>
@@ -213,6 +352,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>
@@ -256,8 +407,10 @@ 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>
 
 <dt>Path</dt>
 <dd>Le chemin, sur le site web concern&eacute;, pour lequel le cookie est
@@ -303,24 +456,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
@@ -331,6 +486,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>
@@ -371,7 +537,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>
 
@@ -382,16 +548,82 @@ 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>
@@ -407,9 +639,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
@@ -476,30 +708,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
@@ -532,25 +745,21 @@ 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>
 
-<p>A partir de la version 2.4.8, ce module renvoie une erreur apr&egrave;s
-10000 it&eacute;rations afin d'&eacute;viter les boucles infinies. Ce nombre maximum
-d'it&eacute;ration peut &ecirc;tre modifi&eacute; via le drapeau N.</p>
-<pre class="prettyprint lang-config"># On veut remplacer 1 caract&egrave;re &agrave; chaque it&eacute;ration de la boucle
-RewriteRule "(.+)[&gt;&lt;;]$" "$1" [N=32000]
-# ... ou s'arr&ecirc;ter apr&egrave;s 10 it&eacute;rations
-RewriteRule "(.+)[&gt;&lt;;]$" "$1" [N=10]</pre>
-
+<p>&Agrave; utiliser avec d&rsquo;extr&ecirc;mes pr&eacute;cautions. Si aucune condition d&rsquo;arr&ecirc;t n&rsquo;est
+d&eacute;finie, ce drapeau fait que la r&egrave;gle boucle &agrave; l&rsquo;infini. Dans la plupart des
+cas, il est pr&eacute;f&eacute;rable d&rsquo;utiliser [L] &agrave; la place de [N], &agrave; moins que vous n&rsquo;ayez
+vraiment l&rsquo;intention de configurer un traitement it&eacute;ratif.</p>
 
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <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
@@ -592,6 +801,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>
@@ -619,6 +832,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>
@@ -636,7 +857,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.
@@ -647,12 +868,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">
@@ -679,7 +905,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
@@ -714,7 +940,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
@@ -737,10 +963,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>
 
@@ -752,12 +978,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>
@@ -773,6 +1005,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>
 
@@ -804,7 +1050,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'.
@@ -814,19 +1060,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
@@ -837,8 +1096,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
@@ -909,9 +1166,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>
@@ -919,11 +1198,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.4.60 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
@@ -931,7 +1228,22 @@ utiliser le drapeau <code>L</code> pour terminer la s&eacute;quence
     n&eacute;cessaire lorsque la substitution de la r&egrave;gle commence par des slashes
     multiples litt&eacute;raux.</p>
 
-    <p>Disponible &agrave; partir de la version 2.4.62 du serveur HTTP Apache.</p>
+    <p>Disponible &agrave; partir de la version 2.4.63 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="../en/rewrite/flags.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
index e4f3ee6f49579d22f3ac151854846aa839f83758..912229af035fb274402498f5449e79893fcdc4f0 100644 (file)
@@ -8,6 +8,6 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
   </variants>
 </metafile>
index 6d1057c52c6a1d2aeb0de2ce1c375abe8430012f..b0ade9246c35c22292ad4d8ea6df97badedda701 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.4</title>
+<title>R&eacute;&eacute;critures au niveau r&eacute;pertoire - Serveur HTTP Apache Version 2.4</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">
 <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.4</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.4</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="../en/rewrite/htaccess.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/rewrite/htaccess.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>
 
 
-<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="../en/rewrite/htaccess.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/rewrite/htaccess.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a></p>
index 2eb75f3314b05263c80d01fc8eb6c6343b507715..00ee9a1c1e2cfbe9a197e729dd6839ae5e1b6eab 100644 (file)
@@ -8,6 +8,6 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
   </variants>
 </metafile>
index 2459ffe9823999cef71a72656f567cf66ca823b4..5a7985b6d3cba695242c5591382a1f5bf1463c97 100644 (file)
 <a href="../tr/rewrite/" hreflang="tr" rel="alternate" title="T&uuml;rk&ccedil;e">&nbsp;tr&nbsp;</a> |
 <a href="../zh-cn/rewrite/" 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><em>Le point fort de mod_rewrite r&eacute;side dans le fait qu'il poss&egrave;de toutes les
+capacit&eacute;s de configuration et la flexibilit&eacute; de Sendmail&nbsp;;mais c'est aussi son
+point faible.</em>
+-- Brian Behlendorf</p>
+
+<p><em>Malgr&eacute; la multitude d'exemples et de documentations, mod_rewrite est de
+la magie noire. De la magie noire tr&egrave;s "cool", mais de la magie noire
+quand-m&ecirc;me.</em></p>
 
        <p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> permet de modifier les requ&ecirc;tes
        entrantes dynamiquement, en fonction de r&egrave;gles manipulant des <a href="intro.html#regex">expressions rationnelles</a>. Vous pouvez
        ainsi relier des URLs arbitraires &agrave; votre propre structure d'URLs
        interne comme vous le souhaitez.</p>
 
-      <p>Il fournit un
-      m&eacute;canisme de manipulation d'URL particuli&egrave;rement souple et
-      puissant en supportant un nombre illimit&eacute; de r&egrave;gles et de
-      conditions attach&eacute;es &agrave; chaque r&egrave;gle. Les manipulations d'URLs
-      peuvent d&eacute;pendre de tests vari&eacute;s : les URLs peuvent
-      &ecirc;tre finement caract&eacute;ris&eacute;es en fonction de variables du serveur,
-      de variables d'environnement, d'en-t&ecirc;tes HTTP, de rep&egrave;res
-      temporels, de recherches dans des bases de donn&eacute;es
-      externes, ou m&ecirc;me de requ&ecirc;tes vers des bases de donn&eacute;es externes
-      et de diff&eacute;rents gestionnaires ou programmes externes.</p>
+<p>Ce guide est un compl&eacute;ment du <a href="../mod/mod_rewrite.html">manuel de
+r&eacute;f&eacute;rence</a> avec des exemples comment&eacute;s, des explications conceptuelles et des
+conseils pratiques. Il est organis&eacute; comme suit&nbsp;:</p>
+
+<dl>
+<dt><a href="intro.html">Introduction</a></dt>
+<dd>Concepts de base&nbsp;: syntaxe des expressions rationnelles, les bases des
+directives RewriteRule et RewriteCond et la mani&egrave;re dont mod_rewrite s'ins&egrave;re
+dans le cycle de vie du traitement des requ&ecirc;tes.</dd>
+
+<dt><a href="htaccess.html">R&eacute;&eacute;critures en fonction du r&eacute;pertoire</a></dt>
+<dd>Les principales diff&eacute;rences entre l'utilisation des r&egrave;gles de r&eacute;&eacute;criture au
+niveau de la configuration globale du serveur et leur utilisation dans un
+contexte de <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">r&eacute;pertoire</a>, y compris la
+suppression du chemin, RewriteBase et la gestion du bouclage par le drapeau [L].</dd>
+
+<dt><a href="flags.html">Drapeaux des r&egrave;gles de r&eacute;&eacute;criture</a></dt>
+<dd>Une r&eacute;f&eacute;rence compl&egrave;te de tous les drapeaux qui peuvent modifier le
+comportement d'une r&egrave;gle de r&eacute;&eacute;criture avec des exemples pour chacun d'entre
+eux.</dd>
+
+<dt><a href="rewritemap.html">Utiliser RewriteMap</a></dt>
+<dd>Comment utiliser des sources de recherche externes &mdash; fichiers texte,
+bases de donn&eacute;es DBM, requ&ecirc;tes SQL et fonctions internes &mdash; pour piloter
+vos r&egrave;gles de r&eacute;&eacute;criture.</dd>
+
+<dt><a href="remapping.html">Redirection et remappage</a></dt>
+<dd>Des recettes pour les t&acirc;ches courantes&nbsp;: redirection HTTPS, noms d'h&ocirc;te
+canoniques, normalisation des barres obliques de fin, routage du contr&ocirc;leur
+frontal, et plus encore.</dd>
 
-      <p>Les r&egrave;gles de r&eacute;&eacute;criture peuvent agir sur l'ensemble des URLs (la partie chemin
-      et la cha&icirc;ne de param&egrave;tres) et peuvent &ecirc;tre utilis&eacute;es dans le contexte du serveur principal
-      (<code>httpd.conf</code>), mais aussi dans le contexte des
-      serveurs virtuels (sections <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>), ou dans le      
-      <a class="glossarylink" href="../glossary.html#perdirectory" title="voir glossaire">contexte des r&eacute;pertoires</a> (fichiers <code>.htaccess</code> et blocs
-      <code>&lt;Directory&gt;</code>. Le r&eacute;sultat
-      r&eacute;&eacute;crit peut conduire vers d'autres r&egrave;gles &agrave; un
-      traitement secondaire interne, une redirection vers une requ&ecirc;te
-      externe ou m&ecirc;me l'envoi vers un serveur mandataire, en fonction
-      des  <a href="flags.html">drapeaux</a> que vous attachez aux
-      r&egrave;gles</p>
+<dt><a href="vhosts.html">Serveurs virtuels dynamiques</a></dt>
+<dd>Utilisation de mod_rewrite pour associer dynamiquement les noms d'h&ocirc;te aux
+racines de document sans devoir cr&eacute;er des blocs VirtualHost individuels.</dd>
 
-       <p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> &eacute;tant tr&egrave;s puissant, il peut par
-       cons&eacute;quent &ecirc;tre tr&egrave;s complexe. Ce guide
-       compl&egrave;te la <a href="../mod/mod_rewrite.html">documentation de
-      r&eacute;f&eacute;rence du module mod_rewrite</a>, et est sens&eacute; all&eacute;ger un
-      peu cette complexit&eacute;, et pr&eacute;senter des exemples largement
-      comment&eacute;s, ainsi que des situations courantes que vous
-      pourrez traiter avec <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>. Mais nous voulons aussi vous
-      montrer des situations o&ugrave; vous ne devrez pas utiliser
-      <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, et lui pr&eacute;f&eacute;rer d'autres
-      fonctionnalit&eacute;s standard d'Apache, &eacute;vitant ainsi
-      d'entrer dans une complexit&eacute; inutile.</p>
+<dt><a href="avoid.html">Quand ne pas utiliser mod_rewrite</a></dt>
+<dd>De nombreuses t&acirc;ches courantes sont accomplies de mani&egrave;re bien plus efficace
+avec des directives plus simples. Ce document vous propose des solutions de
+remplacement et vous indique quand il est pr&eacute;f&eacute;rable de les utiliser.</dd>
 
-<ul>
-<li><a href="../mod/mod_rewrite.html">documentation de
-r&eacute;f&eacute;rence de mod_rewrite</a></li>
-<li><a href="intro.html">Introduction aux expressions rationnelles et &agrave;
-mod_rewrite</a></li>
-<li><a href="rewritemap.html">Utilisation de  RewriteMap</a></li>
-<li><a href="avoid.html">Quand <strong>NE PAS</strong> utiliser mod_rewrite</a></li>
-<li><a href="remapping.html">Using mod_rewrite for redirection and remapping of URLs</a></li>
-<li><a href="vhosts.html">Dynamic virtual hosts with mod_rewrite</a></li>
-<li><a href="tech.html">D&eacute;tails techniques</a></li>
-</ul>
+<dt><a href="tech.html">D&eacute;tails techniques</a></dt>
+<dd>Comment mod_rewrite s'ins&egrave;re dans les phases de traitement des requ&ecirc;tes par
+httpd et l'ordre dans lequel les r&egrave;gles et les conditions sont &eacute;valu&eacute;es.</dd>
+</dl>
 </div>
 <div id="quickview"><h3>Voir aussi</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Documentation de
 r&eacute;f&eacute;rence de mod_rewrite</a></li><li><a href="../urlmapping.html">Mise en correspondance des URLs
index 96567025f086a6a208ce625d2f5661389b6349c8..25046eafe9eadc6ffc0a8f5972183a2cfa1713b3 100644 (file)
@@ -8,7 +8,7 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
     <variant outdated="yes">tr</variant>
     <variant outdated="yes">zh-cn</variant>
   </variants>
index 0af4da5f52cd21c578774fa52b7164077dc12c96..c3b56db7a4e1fe7371b5d4402775c02f7381b113 100644 (file)
@@ -14,7 +14,7 @@
 </script>
 
 <link href="../images/favicon.png" rel="shortcut icon"></head>
-<body id="manual-page"><div id="page-header">
+<body id="manual-page" class="no-sidebar"><div id="page-header">
 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p>
 <p class="apache">Serveur HTTP Apache Version 2.4</p>
 <img alt="" src="../images/feather.png"></div>
 <p><span>Langues Disponibles: </span><a href="../en/rewrite/proxy.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/rewrite/proxy.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>
 
 
-<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 comment utiliser le drapeau [P]
-de la directive RewriteRule pour mandater un contenu vers un autre
-serveur. Plusieurs recettes d&eacute;crivant des sc&eacute;narios courants sont
-fournies.</p>
+<div class="warning">Ce document est obsol&egrave;te. Son contenu a &eacute;t&eacute; fusionn&eacute; avec
+le document <a href="avoid.html#proxy">Quand ne pas utiliser mod_rewrite</a>,
+car le mandatement simple est accompli de mani&egrave;re plus efficace en utilisant la
+directive <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code>. Il sera supprim&eacute;
+dans une prochaine version de cette documentation.</div>
 
 </div>
-<div id="quickview"><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="vhosts.html">Serveurs virtuels</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 class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
-<div class="section">
-<h2 id="dynamic-proxy">Mandater du contenu avec mod_rewrite <a title="Lien permanent" href="#dynamic-proxy" class="permalink">&para;</a></h2>
-
-  
-
-  <dl>
-    <dt>Description :</dt>
-
-    <dd>
-    <p>
-    <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> impl&eacute;mente le drapeau [P] qui permet de passer des URLs,
-    via <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>, &agrave; un autre serveur. Deux exemples sont fournis ici.
-    Dans le premier, une URL est pass&eacute;e directement &agrave; un autre serveur,
-    et servie comme si c'&eacute;tait une URL locale. Dans le deuxi&egrave;me, nous
-    mandatons un contenu manquant vers un serveur d'arri&egrave;re-plan.</p>
-    </dd>
-
-    <dt>Solution :</dt>
-
-    <dd>
-      <p>Pour passer une URL &agrave; un autre serveur, on utilise le drapeau
-      [P] comme suit :</p>
-
-<pre class="prettyprint lang-config">RewriteEngine  on
-RewriteBase    "/produits/"
-RewriteRule    "^widget/(.*)$"  "http://produits.example.com/widget/$1"  [P]
-ProxyPassReverse "/produits/objet/" "http://produits.example.com/objet/"</pre>
-
-
-   <p>Dans le deuxi&egrave;me exemple, nous ne mandatons la requ&ecirc;te que si nous
-   ne trouvons pas la ressource localement. Ceci peut s'av&eacute;rer tr&egrave;s
-   utile lorsque vous effectuez une migration d'un serveur vers un
-   autre, et que vous n'&ecirc;tes pas certain que tout le contenu a d&eacute;j&agrave; &eacute;t&eacute;
-   migr&eacute;.</p>
-
-<pre class="prettyprint lang-config">RewriteCond "%{REQUEST_FILENAME}"       !-f
-RewriteCond "%{REQUEST_FILENAME}"       !-d
-RewriteRule "^/(.*)" "http://ancien.exemple.com/$1" [P]
-ProxyPassReverse "/" "http://ancien.exemple.com/"</pre>
-
-    </dd>
-
-    <dt>Discussion :</dt>
-
-    <dd><p>Dans les deux cas, on ajoute une directive <code class="directive"><a href="../mod/mod_proxy.html#proxypassreverse">ProxyPassReverse</a></code> afin de s'assurer
-    que toute redirection en provenance du serveur d'arri&egrave;re-plan est
-    renvoy&eacute;e correctement au client.</p>
-
-    <p>Chaque fois que cela est possible, pr&eacute;f&eacute;rez l'utilisation de la
-    directive <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code> ou
-    <code class="directive"><a href="../mod/mod_proxy.html#proxypassmatch">ProxyPassMatch</a></code> &agrave;
-    <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.</p>
-    </dd>
-  </dl>
-
-</div></div>
+</div>
 <div class="bottomlang">
 <p><span>Langues Disponibles: </span><a href="../en/rewrite/proxy.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/rewrite/proxy.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a></p>
index b3fd4080c15a95f0477fe072964909526fb9325f..07ad4e7e07a492796a652e274a6eda81347ca288 100644 (file)
@@ -8,6 +8,6 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
   </variants>
 </metafile>
index eb3b1613a41f8e3d639aa06f5bd8c0251bd4a4a7..2ab0572c207df4b46d088d33238ec2eb9ca039ca 100644 (file)
@@ -26,8 +26,6 @@
 <p><span>Langues Disponibles: </span><a href="../en/rewrite/remapping.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/rewrite/remapping.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>
 
 
 <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
@@ -37,27 +35,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="#browser-dependent-content">Contenu d&eacute;pendant du navigateur</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>
@@ -85,9 +82,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>
@@ -119,7 +331,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
@@ -168,38 +380,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>
 
@@ -225,10 +411,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>
@@ -245,7 +431,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
@@ -301,7 +487,7 @@ une section de serveur virtuel pour le/les noms d'h&ocirc;te non canoniques.</p>
 &lt;/VirtualHost&gt;</pre>
 
 
-<p>Vous pouvez aussi utiliser la directive <code class="directive"><a href="../mod/core.html#if">&lt;If&gt;</a></code> :</p>
+<p>Vous pouvez aussi utiliser la directive <code class="directive"><a href="../mod/core.html#if">&lt;If&gt;</a></code> (versions 2.4 et ult&eacute;rieures) :</p>
 
 <pre class="prettyprint lang-config">&lt;If "%{HTTP_HOST} != 'www.example.com'"&gt;
        Redirect "/" "http://www.example.com/"
@@ -341,6 +527,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>
@@ -350,9 +545,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>
@@ -395,104 +605,18 @@ 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>
 
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
-<h2 id="browser-dependent-content">Contenu d&eacute;pendant du navigateur <a title="Lien permanent" href="#browser-dependent-content" class="permalink">&para;</a></h2>
-
-      
-
-      <dl>
-        <dt>Description :</dt>
-
-        <dd>
-          <p>Nous voulons fournir des contenus diff&eacute;rents en fonction du
-         navigateur (user-agent) qui effectue la requ&ecirc;te.</p>
-        </dd>
-
-        <dt>Solution :</dt>
-
-        <dd>
-          <p>Nous devons d&eacute;terminer quel contenu servir, en nous basant
-         sur l'en-t&ecirc;te HTTP "User-Agent". La
-         configuration suivante effectue ceci : si l'en-t&ecirc;te HTTP
-         "User-Agent" commence par "Mozilla/3", le nom de la page
-         <code>foo.html</code> est r&eacute;&eacute;crit en <code>foo.NS.html</code>
-         et la r&eacute;&eacute;criture s'arr&ecirc;te. Si le navigateur est "Lynx" ou
-         "Mozilla" version 1 ou 2, l'URL devient
-         <code>foo.20.html</code>. Tous les autres navigateurs
-         re&ccedil;oivent la page <code>foo.32.html</code>. Tout ceci est
-         effectu&eacute; par le jeu de r&egrave;gles suivant :</p>
-<pre class="prettyprint lang-config">RewriteCond "%{HTTP_USER_AGENT}"  "^<strong>Mozilla/3</strong>.*"
-RewriteRule "^foo\.html$"         "foo.<strong>NS</strong>.html"          [<strong>L</strong>]
-
-RewriteCond "%{HTTP_USER_AGENT}"  "^Lynx/" [OR]
-RewriteCond "%{HTTP_USER_AGENT}"  "^Mozilla/[12]"
-RewriteRule "^foo\.html$"         "foo.<strong>20</strong>.html"          [<strong>L</strong>]
-
-RewriteRule "^foo\.html$"         "foo.<strong>32</strong>.html"          [<strong>L</strong>]</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="canonicalurl">URLs canoniques <a title="Lien permanent" href="#canonicalurl" class="permalink">&para;</a></h2>
 
 
@@ -579,56 +703,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>
@@ -675,19 +749,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="../en/rewrite/remapping.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
index 5e5f6e1602e803beab7b88a6987e27d3c8287822..fc4dfefebf26cb01ad30e3c557638c376e1308b4 100644 (file)
@@ -8,6 +8,6 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
   </variants>
 </metafile>
index 7411018428cffff288577160c099e6691bbfa302..33ec86b695f49f2395def67a350f9a388a315071 100644 (file)
@@ -26,8 +26,6 @@
 <p><span>Langues Disponibles: </span><a href="../en/rewrite/rewritemap.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/rewrite/rewritemap.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>
 
 
     <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>
@@ -162,7 +154,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>
@@ -412,7 +404,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
@@ -427,16 +419,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
@@ -487,6 +512,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 e385817f7b437445612e5ad311d50a28991e911b..b77e9e616859e53cbd6bc2e85e816187bead9617 100644 (file)
@@ -8,6 +8,6 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
   </variants>
 </metafile>
index 8a14b5d88caab58bd551a39489184025d0fb6ec6..0cddd25a2654e1e248e7fbae554d369893caab4e 100644 (file)
 <p><span>Langues Disponibles: </span><a href="../en/rewrite/tech.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/rewrite/tech.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>
 
 <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="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 (.htaccess)</a></li><li><a href="avoid.html">Quand ne pas utiliser mod_rewrite</a></li></ul></div>
+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>
 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
 <div class="section">
 <h2 id="InternalAPI">Phases de l'API <a title="Lien permanent" href="#InternalAPI" class="permalink">&para;</a></h2>
@@ -61,7 +61,7 @@ correspondance</a></li><li><a href="vhosts.html">Serveurs virtuels</a></li><li><
 
     <p>Lorsqu'une requ&ecirc;te arrive et une fois le serveur
     correspondant ou le serveur virtuel d&eacute;termin&eacute;, le moteur de
-    r&eacute;&eacute;criture commence &agrave; traiter toute directive apparaissant dans la
+    r&eacute;&eacute;criture commence &agrave; traiter toute directive <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> apparaissant dans la
     configuration de niveau serveur (autrement dit dans le
     fichier de configuration principal du serveur et les sections
     <code class="directive"><a href="../mod/core.html#virtualhost">&lt;Virtualhost&gt;</a></code>).
@@ -73,104 +73,172 @@ correspondance</a></li><li><a href="vhosts.html">Serveurs virtuels</a></li><li><
     (fichiers <code>.htaccess</code> et sections <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>) sont appliqu&eacute;es. Ce processus
     s'ex&eacute;cute au cours de la phase Fixup.</p>
 
-    <p>Dans tous ces cas, mod_rewrite r&eacute;&eacute;crit le
-    <code>REQUEST_URI</code> soit vers une nouvelle URL, soit vers un
+    <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 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> (autrement dit dans les
-    fichiers <code>.htaccess</code> et les sections
-    <code>Directory</code>), les r&egrave;gles de r&eacute;&eacute;criture s'appliquent apr&egrave;s
-    la traduction de l'URL en nom de fichier. C'est pourquoi le chemin
-    URL auquel <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> compare initialement les directives
-    <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> est le
-    chemin complet vers le nom de fichier traduit amput&eacute; de la partie
-    r&eacute;pertoires (y compris le dernier slash).</p>
-
-    <p>Un exemple : si les r&egrave;gles se trouvent dans
-    /var/www/foo/.htaccess et si une requ&ecirc;te pour /foo/bar/baz est
-    trait&eacute;, une expression comme ^bar/baz$ correspondra.</p>
-
-    <p>Si une substitution intervient dans un contexte de r&eacute;pertoire,
-    une nouvelle sous-requ&ecirc;te interne est g&eacute;n&eacute;r&eacute;e avec la nouvelle URL,
-    ce qui relance le traitement des phases de la requ&ecirc;te. 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 chemin URL
-    devant pr&eacute;fixer cette substitution. Dans un contexte de r&eacute;pertoire,
-    il faut s'assurer de cr&eacute;er des r&egrave;gles qui
-    n'effectueront pas de substitution au
-    cours d'une passe ult&eacute;rieure du processus de r&eacute;&eacute;criture au niveau
-    r&eacute;pertoire afin d'&eacute;viter les bouclages . Voir <a href="https://cwiki.apache.org/confluence/display/httpd/RewriteLooping">Bouclage dans le
-    processus de r&eacute;&eacute;criture</a> pour une discussion plus d&eacute;taill&eacute;e &agrave;
-    propos de ce probl&egrave;me.</p>
-
-    <p>En cons&eacute;quence de cette manipulation de l'URL , vous devrez
-    pensez &agrave; confectionner diff&eacute;remment vos r&egrave;gles de r&eacute;&eacute;criture dans un
-    contexte de niveau r&eacute;pertoire. En particulier, rappelez-vous que le
-    chemin de r&eacute;pertoire sera absent de l'URL que vos r&egrave;gles de
-    r&eacute;&eacute;criture verront. Voici quelques exemples qui permettront de
-    clarifier les choses :</p>
-
-    <table class="bordered">
-
-        <tr>
-            <th>Position de la r&egrave;gle</th>
-            <th>R&egrave;gle</th>
-        </tr>
-
-        <tr>
-            <td>Section VirtualHost</td>
-            <td>RewriteRule "^/images/(.+)\.jpg" "/images/$1.gif"</td>
-        </tr>
-
-        <tr>
-            <td>Fichier .htaccess &agrave; la racine des documents</td>
-            <td>RewriteRule "^images/(.+)\.jpg" "images/$1.gif"</td>
-        </tr>
-
-        <tr>
-            <td>Fichier .htaccess dans le r&eacute;pertoire images</td>
-            <td>RewriteRule "^(.+)\.jpg" "$1.gif"</td>
-        </tr>
-
-    </table>
-
-    <p>Pour une &eacute;tude plus approfondie de la mani&egrave;re dont
-    <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> manipule les URLs dans les diff&eacute;rents
-    contextes, vous pouvez consulter les <a href="../mod/mod_rewrite.html#logging">entr&eacute;es du journal</a>
-    g&eacute;n&eacute;r&eacute;es au cours du processus de
-    r&eacute;&eacute;criture.</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&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&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/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'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="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/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;e au
+      <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
@@ -195,6 +263,15 @@ correspondance</a></li><li><a href="vhosts.html">Serveurs virtuels</a></li><li><
       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="../en/rewrite/tech.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
index f8fb2f4fda6e95795ba44d1ff66ee522d4b44474..09c2c3974647fdd2672ca8170ad926be08bb7228 100644 (file)
@@ -8,6 +8,6 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
   </variants>
 </metafile>
index 5a1cc93473a3189e3827b4d5e5d02d183ed84367..6a8f5844b50a9af7ab91f6502036766a139ccc67 100644 (file)
@@ -26,8 +26,6 @@
 <p><span>Langues Disponibles: </span><a href="../en/rewrite/vhosts.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/rewrite/vhosts.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>
 
 
 <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
@@ -35,7 +33,7 @@
 virtuels dynamiquement configur&eacute;s en utilisant
 <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.</p>
 
-<div class="warning">L'utilisation de <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> n'est pas la
+<div class="warning">L'utilisation de <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> n'est en g&eacute;n&eacute;ral pas la
 meilleure m&eacute;thode pour configurer des serveurs virtuels. Vous devez dans un
 premier temps tenter de r&eacute;soudre votre probl&egrave;me via ces  <a href="../vhosts/mass.html">d'autres m&eacute;thodes</a> avant d'avoir recours &agrave;
 <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>. Voir aussi le document <a href="avoid.html#vhosts">Comment &eacute;viter
@@ -49,7 +47,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>
@@ -65,9 +63,10 @@ correspondance</a></li><li><a href="access.html">Contr&ocirc;le d'acc&egrave;s</
     cr&eacute;er de nouvelle section VirtualHost.</p>
 
     <p>Dans cet exemple, nous supposons que nous utilisons le nom d'h&ocirc;te
-    <code>www.<strong>SITE</strong>.example.com</code> pour chaque
+    <code><strong>SITE</strong>.example.com</code> pour chaque
     utilisateur, et que nous servons leur contenu depuis
-    <code>/home/<strong>SITE</strong>/www</code>.</p>
+    <code>/home/<strong>SITE</strong>/www</code>. Nous souhaitons cependant que
+    <code>www.example.com</code> n'apparaisse pas dans cette mise en correspondance.</p>
     </dd>
 
     <dt>Solution :</dt>
@@ -79,8 +78,8 @@ correspondance</a></li><li><a href="access.html">Contr&ocirc;le d'acc&egrave;s</
 RewriteMap    lowercase int:tolower
 
 RewriteCond   %{HTTP_HOST} !^www\.
-RewriteCond   "${lowercase:%{<strong>HTTP_HOST</strong>}}"   "^www\.<strong>([^.]+)</strong>\.example\.com$"
-RewriteRule   "^(.*)" "/home/<strong>%1</strong>/www$1"</pre>
+RewriteCond   ${lowercase:%{<strong>HTTP_HOST</strong>}}   ^<strong>([^.]+)</strong>\.example\.com$
+RewriteRule   ^(.*)    /home/<strong>%1</strong>/www$1</pre>
 </dd>
 
 <dt>Discussion</dt>
@@ -102,6 +101,9 @@ r&eacute;f&eacute;rences arri&egrave;res <code>%1</code>, <code>%2</code>, etc..
 les contenus des parenth&egrave;ses utilis&eacute;es dans une directive <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> le sont dans les
 r&eacute;f&eacute;rences arri&egrave;res <code>$1</code>, <code>$2</code>, etc...</p>
 
+<p>La premi&egrave;re directive <code>RewriteCond</code> v&eacute;rifie si le nom d'h&ocirc;te
+commence par <code>www.</code> et si c'est le cas, la r&eacute;&eacute;criture est annul&eacute;e.</p>
+
 <p>
 Comme c'est le cas pour de nombreuses techniques discut&eacute;es dans ce
 document, <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> n'est vraiment pas la meilleure m&eacute;thode pour
@@ -152,10 +154,10 @@ RewriteEngine On
 
 # un nom de serveur extrait d'un en-t&ecirc;te Host: peut &ecirc;tre dans n'importe
 # quelle casse
-RewriteMap  lowercase  int:tolower
+RewriteMap  lowercase  "int:tolower"
 
 ## on s'occupe tout d'abord des documents normaux :<br>
-# permet &agrave; Alias "/icons/" de fonctionner - r&eacute;p&eacute;ter pour les autres
+# permet &agrave; Alias /icons/ de fonctionner - r&eacute;p&eacute;ter pour les autres
 RewriteCond  "%{REQUEST_URI}"  "!^/icons/"
 # permet aux CGIs de fonctionner
 RewriteCond  "%{REQUEST_URI}"  "!^/cgi-bin/"
@@ -192,7 +194,7 @@ www.client-N.example.com  /www/clients/N<br>
 
 <pre class="prettyprint lang-config">RewriteEngine on
 
-RewriteMap   lowercase  int:tolower
+RewriteMap   lowercase  "int:tolower"
 
 # d&eacute;finit le fichier de correspondances
 RewriteMap   vhost      "txt:/www/conf/vhost.map"
index 83f3ccc60ea0715e94ad4d0763e9324d56587d3b..02e019991d32131bda58588a8006bdd96abd1f15 100644 (file)
@@ -8,6 +8,6 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
   </variants>
 </metafile>
index 670a7a680f6f3a2cdd3f868ed2e1cef43164f178..02e06a6b5b236c3c155ec9a4fa507181d4563424 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>