]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_rewrite.html.fr
Update transformations
[apache] / docs / manual / mod / mod_rewrite.html.fr
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
4         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5               This file is generated from xml source: DO NOT EDIT
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7       -->
8 <title>mod_rewrite - Serveur Apache HTTP</title>
9 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
12 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
13 <body>
14 <div id="page-header">
15 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
16 <p class="apache">Serveur Apache HTTP Version 2.5</p>
17 <img alt="" src="../images/feather.gif" /></div>
18 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
19 <div id="path">
20 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Modules</a></div>
21 <div id="page-content">
22 <div id="preamble"><h1>Module Apache mod_rewrite</h1>
23 <div class="toplang">
24 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_rewrite.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
25 <a href="../fr/mod/mod_rewrite.html" title="Français">&nbsp;fr&nbsp;</a></p>
26 </div>
27 <div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
28             anglaise pour les changements récents.</div>
29 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Ce module fournit un moteur de réécriture à base de
30 règles permettant de réécrire les URLs des requêtes
31 à la volée</td></tr>
32 <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
33 <tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur de Module:</a></th><td>rewrite_module</td></tr>
34 <tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_rewrite.c</td></tr></table>
35 <h3>Sommaire</h3>
36
37       <p>Le module <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> utilise un moteur de
38       réécriture à base de règles, basé sur un interpréteur
39       d'expressions rationnelles, pour réécrire les URLs à la volée. Par
40       défaut, <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> met en correspondance une URL
41       avec le système de fichiers. Cependant, on peut aussi l'utiliser
42       pour rediriger une URL vers une autre URL, ou pour invoquer une
43       requête interne à destination du mandataire.</p>
44       <p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> fournit une méthode souple et
45       puissante pour manipuler les URLs en utilisant un nombre illimité
46       de règles. Chaque règle peut être associée à un nombre illimité de
47       conditions, afin de vous permettre de réécrire les URLs en
48       fonction de variables du serveur, de variables d'environnement,
49       d'en-têtes HTTP, ou de repères temporels.</p>
50       <p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> agit sur la totalité de l'URL, y
51       compris la partie chemin. Une règle de réécriture peut être
52       invoquée dans <code>httpd.conf</code> ou dans un fichier
53       <code>.htaccess</code>. Le chemin généré par une règle de
54       réécriture peut inclure une chaîne de paramètres, ou peut renvoyer
55       vers un traitement secondaire interne, une redirection vers une
56       requête externe ou vers le mandataire interne.</p>
57
58       <p>Vous trouverez d'avantage de détails, discussions et exemples
59       dans la
60       <a href="../rewrite/">documentation détaillée
61       sur mod_rewrite</a>.</p>
62 </div>
63 <div id="quickview"><h3 class="directives">Directives</h3>
64 <ul id="toc">
65 <li><img alt="" src="../images/down.gif" /> <a href="#rewritebase">RewriteBase</a></li>
66 <li><img alt="" src="../images/down.gif" /> <a href="#rewritecond">RewriteCond</a></li>
67 <li><img alt="" src="../images/down.gif" /> <a href="#rewriteengine">RewriteEngine</a></li>
68 <li><img alt="" src="../images/down.gif" /> <a href="#rewritemap">RewriteMap</a></li>
69 <li><img alt="" src="../images/down.gif" /> <a href="#rewriteoptions">RewriteOptions</a></li>
70 <li><img alt="" src="../images/down.gif" /> <a href="#rewriterule">RewriteRule</a></li>
71 </ul>
72 <h3>Sujets</h3>
73 <ul id="topics">
74 <li><img alt="" src="../images/down.gif" /> <a href="#logging">Journalisation</a></li>
75 </ul></div>
76 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
77 <div class="section">
78 <h2><a name="logging" id="logging">Journalisation</a></h2>
79
80     <p><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> offre une journalisation détaillée
81     de ses actions aux niveaux de journalisation <code>trace1</code> à
82     <code>trace8</code>. Le niveau de journalisation peut être défini de
83     manière spécifique à <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> via la directive
84     <code class="directive"><a href="../mod/core.html#loglevel">LogLevel</a></code> : jusqu'au niveau
85     <code>debug</code> aucune action n'est journalisée, alors qu'elles
86     le sont pratiquement toutes au niveau <code>trace8</code>.</p>
87
88     <div class="note">
89       L'utilisation d'un niveau de journalisation élevé pour
90       <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> va ralentir votre serveur HTTP Apache
91       de manière dramatique ! N'utilisez un niveau de journalisation
92       supérieur à <code>trace2</code> qu'à des fins de débogage !
93     </div>
94
95     <div class="example"><h3>Exemple</h3><p><code>
96       LogLevel alert rewrite:trace3
97     </code></p></div>
98
99     <div class="note"><h3>RewriteLog</h3>
100       <p>Ceux qui sont familiers avec les versions précédentes de
101       <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> vont probablement rechercher en vain les
102       directives <code>RewriteLog</code> et
103       <code>RewriteLogLevel</code>. Elles ont été en effet remplacées
104       par une configuration de la journalisation par module, comme
105       mentionné plus haut.
106       </p>
107
108       <p>Pour extraire les traces spécifiques à
109       <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, affichez le fichier journal en
110       redirigeant la sortie vers grep :</p>
111     <div class="example"><p><code>
112     tail -f error_log|fgrep '[rewrite:'
113     </code></p></div>
114     </div>
115
116 </div>
117 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
118 <div class="directive-section"><h2><a name="RewriteBase" id="RewriteBase">RewriteBase</a> <a name="rewritebase" id="rewritebase">Directive</a></h2>
119 <table class="directive">
120 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit l'URL de base pour les réécritures au niveau
121 répertoire</td></tr>
122 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteBase <em>chemin URL</em></code></td></tr>
123 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>Pas de valeur par défaut</code></td></tr>
124 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>répertoire, .htaccess</td></tr>
125 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
126 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
127 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
128 </table>
129       <p>La directive <code class="directive">RewriteBase</code> définit
130       explicitement le chemin URL de base (et non le chemin du
131       répertoire dans le système de fichiers !) pour les réécritures dans un contexte
132       de répertoire dont le résultat est la substitution d'un
133       chemin relatif. Lorsque vous utilisez une directive <code class="directive"><a href="#rewriterule">RewriteRule</a></code> dans un fichier
134       <code>.htaccess</code>, <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> enlève le
135       préfixe de répertoire local avant d'effectuer le traitement, puis
136       réécrit ce qui reste de l'URL. Lorsque la réécriture est terminée,
137       <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> ajoute automatiquement le préfixe de
138       répertoire local (ou la valeur de la directive
139       <code class="directive">RewriteBase</code> si cette dernière est définie)
140       à la chaîne de substitution avant de la remettre à disposition du
141       serveur, comme s'il s'agissait de l'URL d'origine.</p>
142
143         <p>Cette directive est <em>requise</em> pour les réécritures
144         dans un contexte de répertoire défini via la directive
145         <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code> lorsque la
146         substitution utilise un chemin relatif.</p>
147
148       <p>Si votre chemin URL n'existe pas réellement dans le système de
149       fichiers, ou ne trouve pas directement sous le répertoire défini
150       par la directive <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>, vous devez utiliser la
151       directive <code class="directive">RewriteBase</code> dans chaque fichier
152         <code>.htaccess</code> où vous voulez utiliser des directives <code class="directive"><a href="#rewriterule">RewriteRule</a></code>.</p>
153
154       <p>L'exemple ci-dessous montre comment faire correspondre
155       http://example.com/mon-appli/index.html à
156       /home/www/exemple/nouveau_site.html dans un fichier
157       <code>.htaccess</code>. On suppose que le contenu disponible à
158       http://example.com/ se situe sur le disque à
159       /home/www/exemple/.</p>
160
161 <div class="example"><pre>
162 RewriteEngine On
163 # Le chemin URL utilisé pour arriver dans ce contexte, et non le chemin
164 # du système de fichiers
165 RewriteBase /mon-appli/
166 RewriteRule ^index\.html$  nouveau_site.html
167 </pre></div>
168
169
170 </div>
171 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
172 <div class="directive-section"><h2><a name="RewriteCond" id="RewriteCond">RewriteCond</a> <a name="rewritecond" id="rewritecond">Directive</a></h2>
173 <table class="directive">
174 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit une condition qui devra être satisfaite pour que
175 la réécriture soit effectuée
176 </td></tr>
177 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code> RewriteCond
178       <em>chaîne de test</em> <em>expression de comparaison</em></code></td></tr>
179 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
180 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
181 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
182 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
183 </table>
184       <p>La directive <code class="directive">RewriteCond</code> permet de définir une
185       condition d'exécution d'une règle. Une ou plusieurs conditions
186       <code class="directive">RewriteCond</code> peuvent précéder une
187       directive <code class="directive"><a href="#rewriterule">RewriteRule</a></code>. La règle de réécriture correspondante n'est
188       ainsi exécutée que si ces conditions sont satisfaites,
189       <strong>et</strong> si l'URI correspond au modèle spécifié dans la
190       règle.</p>
191
192       <p><em>TestString</em> est une chaîne qui peut contenir les
193       extensions suivantes en plus du texte simple :</p>
194
195       <ul>
196         <li>
197           <strong>références arrières de règle de réécriture</strong> :
198           ce sont des références arrières de la forme
199           <strong><code>$N</code></strong> (0 &lt;= N &lt;= 9). $1 à $9
200           permettent d'accéder aux parties regroupées (entre
201           parenthèses) du modèle, issues de la <code>RewriteRule</code>
202           concernée par le jeu de conditions <code>RewriteCond</code>
203           courant. $0 donne accès à l'ensemble de la chaîne
204           correspondant au modèle.</li>
205         <li>
206           <strong>Références arrières de condition de réécriture
207           </strong> : ce sont des références arrières de la forme
208           <strong><code>%N</code></strong> (0 &lt;= N &lt;= 9). %1 à %9
209           permettent d'accéder aux parties regroupées (entre
210           parenthèses) du modèle, issues de la <code>RewriteRule</code>
211           concernée par le jeu de conditions <code>RewriteCond</code>
212           courant. %0 donne accès à l'ensemble de la chaîne
213           correspondant au modèle.</li>
214         <li>
215           <strong>extensions de table de réécriture</strong> :
216           ce sont des extensions de la forme <strong><code>${nomTable:clé|défaut}</code></strong>. Voir la <a>href="#mapfunc"&gt;documentation sur RewriteMap</a>
217            pour plus de détails.
218         </li>
219         <li>
220           <strong>Variables du serveur</strong> :
221           ce sont des variables de la forme
222           <strong><code>%{</code> <em>NAME_OF_VARIABLE</em> <code>}</code></strong>,
223             où <em>NOM_DE_VARIABLE</em> peut contenir une chaîne issue
224             de la liste suivante :
225
226           <table>
227           
228             <tr>
229               <th>En-têtes HTTP :</th> <th>connexion &amp; requête:</th> <th />
230             </tr>
231
232             <tr>
233               <td>
234                  HTTP_USER_AGENT<br />
235                  HTTP_REFERER<br />
236                  HTTP_COOKIE<br />
237                  HTTP_FORWARDED<br />
238                  HTTP_HOST<br />
239                  HTTP_PROXY_CONNECTION<br />
240                  HTTP_ACCEPT<br />
241               </td>
242
243               <td>
244                  REMOTE_ADDR<br />
245                  REMOTE_HOST<br />
246                  REMOTE_PORT<br />
247                  REMOTE_USER<br />
248                  REMOTE_IDENT<br />
249                  REQUEST_METHOD<br />
250                  SCRIPT_FILENAME<br />
251                  PATH_INFO<br />
252                  QUERY_STRING<br />
253                  AUTH_TYPE<br />
254               </td>
255
256               <td />
257             </tr>
258
259             <tr>
260               <th>variables internes au serveur :</th> <th>date et heure :</th> <th>spéciaux :</th>
261             </tr>
262
263             <tr>
264               <td>
265                  DOCUMENT_ROOT<br />
266                  SERVER_ADMIN<br />
267                  SERVER_NAME<br />
268                  SERVER_ADDR<br />
269                  SERVER_PORT<br />
270                  SERVER_PROTOCOL<br />
271                  SERVER_SOFTWARE<br />
272               </td>
273
274               <td>
275                  TIME_YEAR<br />
276                  TIME_MON<br />
277                  TIME_DAY<br />
278                  TIME_HOUR<br />
279                  TIME_MIN<br />
280                  TIME_SEC<br />
281                  TIME_WDAY<br />
282                  TIME<br />
283               </td>
284
285               <td>
286                  API_VERSION<br />
287                  THE_REQUEST<br />
288                  REQUEST_URI<br />
289                  REQUEST_FILENAME<br />
290                  IS_SUBREQ<br />
291                  HTTPS<br />
292                  REQUEST_SCHEME<br />
293               </td>
294             </tr>
295           </table>
296
297                 <p>Ces variables correspondent toutes aux en-têtes MIME
298                 HTTP de mêmes noms, au variables C du serveur HTTP Apache, ou
299                 aux champs <code>struct tm</code> du système Unix. La
300                 plupart d'entre elles sont documentées ailleurs dans le
301                 manuel ou dans la spécification CGI.</p>
302
303                 <p>SERVER_NAME et SERVER_PORT dépendent respectivement
304                 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>
305
306                 <p>Parmi les variables
307                 spécifiques à mod_rewrite, ou trouve les suivantes :</p>
308         <div class="note">
309                 <dl>
310                   <dt><code>IS_SUBREQ</code></dt>
311
312                   <dd>Contient le texte "true" si la requête en cours
313                   de traitement est une sous-requête, "false" dans le
314                   cas contraire. Une sous-requête est générée quand un
315                   module a besoin de se référer à des fichiers ou URIs
316                   addidionnels pour pouvoir mener à bien sa tâche.</dd>
317
318                   <dt><code>API_VERSION</code></dt>
319
320                   <dd>C'est la version de l'API des modules Apache httpd
321                   (l'interface interne entre le serveur et les modules)
322                   pour la construction courante de httpd, telle qu'elle
323                   est définie dans include/ap_mmn.h. La version de l'API
324                   des modules correspond à la version du serveur Apache
325                   httpd
326                   utilisé (par exemple, pour la version 1.3.14 d'Apache
327                   httpd,
328                   il s'agit de la version 19990320:10), mais intéresse
329                   principalement les auteurs de modules.</dd>
330
331                   <dt><code>THE_REQUEST</code></dt>
332
333                   <dd>La ligne de requête HTTP complète envoyée par le
334                   navigateur au serveur (par exemple, "<code>GET
335                   /index.html HTTP/1.1</code>"), à l'exclusion de tout
336                   en-tête ajouté par le navigateur. Cette
337                   valeur n'a pas été déséchappée (décodée), à la
338                   différence de la plupart des variables suivantes.</dd>
339
340                   <dt><code>REQUEST_URI</code></dt>
341
342                   <dd>La partie chemin de l'URI de la requête, comme
343                   "/index.html". En particulier, ceci exclut la chaîne
344                   de paramètres qui est quant à elle disponible via sa
345                   propre variable <code>QUERY_STRING</code>.</dd>
346
347                   <dt><code>REQUEST_FILENAME</code></dt>
348
349                   <dd>Le chemin complet local au système de fichiers
350                   du fichier ou du script correspondant
351                   à la requête, s'il a déjà été déterminé par le serveur
352                   au moment où on y fait référence. Dans le cas
353                   contraire, et en particulier dans le cas d'un serveur
354                   virtuel, <code>REQUEST_FILENAME</code> contient la
355                   valeur de <code>REQUEST_URI</code>.</dd>
356
357                   <dt><code>HTTPS</code></dt>
358
359                   <dd>Contient le texte "on" si la connexion
360                   utilise SSL/TLS, "off" dans le cas contraire
361                   (Cette variable peut être utilisée sans problème, que
362                   <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> soit chargé ou non.</dd>
363
364                   <dt><code>REQUEST_SCHEME</code></dt>
365
366                   <dd>Contient le protocole de la requête (en général
367                   "http" ou "https"). La valeur peut être modifiée par
368                   la directive <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code>.</dd>
369
370                 </dl>
371 </div>
372         </li>
373       </ul>
374
375       <p>Si la <em>chaîne de test</em> contient la valeur spéciale
376       <code>expr</code>, <em>expression de comparaison</em> sera traité
377       en tant qu'expression rationnelle de type <a href="../expr.html">ap_expr</a>.</p>
378
379       <p>Autres points à connaître ::</p>
380       <ol>
381         <li>
382         <p>Les variables <code>SCRIPT_FILENAME</code> et
383         <code>REQUEST_FILENAME</code> contiennent toutes deux la valeur
384         du champ <code>filename</code> de la
385         structure interne <code>request_rec</code>du serveur HTTP Apache.
386         Le premier nom correspond au nom de variable bien connu CGI,
387         alors que le second est l'équivalent de REQUEST_URI (qui
388         contient la valeur du champ <code>uri</code> de
389         <code>request_rec</code>).</p>
390         <p>Si une substitution intervient et si la réécriture se
391         poursuit, la valeur des deux variables sera mise à jour en
392         conséquence.</p>
393         <p>Dans le contexte du serveur principal (c'est à dire avant que
394         la requête ne soit mise en correspondance avec le système de
395         fichiers), SCRIPT_FILENAME et REQUEST_FILENAME  ne peuvent pas
396         contenir le chemin entier dans le système de fichiers local car
397         ce chemin b'est pas connu à ce stade du traitement. Dans ce cas,
398         les deux variables contiendront la valeur de REQUEST_URI. Pour
399         obtenir le chemin complet de la requête dans le système de
400         fichiers local dans le contexte du serveur principal, utilisez une
401         référence avant à base d'URL
402         <code>%{LA-U:REQUEST_FILENAME}</code> pour déterminer la valeur
403         finale de REQUEST_FILENAME.</p></li>
404
405
406         <li>
407         <code>%{ENV:<em>variable</em>}</code>, où <em>variable</em> peut
408         correspondre à une variable d'environnement quelconque.</li>
409         <li>
410         <code>%{ENV:variable}</code> est aussi disponible, où
411         <em>variable</em> peut correspondre à toute variable
412         d'environnement. Peut être consulté via des structures internes
413         d'Apache httpd et (si on ne les trouve pas ici) via la fonction
414         <code>getenv()</code> à partir du processus du serveur Apache
415         httpd.</li>
416
417         <li>Que <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> soit chargé ou non, on peut
418         utiliser <code>%{SSL:variable}</code>, où <em>variable</em>
419         peut être remplacé par le nom d'une
420         <a href="mod_ssl.html#envvars">variable
421         d'environnement SSL</a> . Si <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> n'est pas
422         chargé, cette variable contiendra toujours une chaîne vide.
423         Exemple : <code>%{SSL:SSL_CIPHER_USEKEYSIZE}</code> pourra
424         contenir la valeur <code>128</code>.</li>
425
426         <li>
427         On peut utiliser <code>%{HTTP:en-tête}</code>, où
428         <em>en-tête</em> peut correspondre à tout nom d'en-tête MIME
429         HTTP, pour extraire la valeur d'un en-tête envoyé dans la
430         requête HTTP. Par exemple, <code>%{HTTP:Proxy-Connection}</code>
431         contiendra la valeur de l'en-tête HTTP
432         "<code>Proxy-Connection:</code>".
433         Si on utilise un en-tête HTTP
434         dans une condition, et si cette condition est évaluée à
435         <code>vrai</code> pour la requête, cet en-tête sera ajouté à l'en-tête Vary de
436         la réponse. Il ne le sera pas si la condition est évaluée à
437         <code>faux</code>. L'ajout de l'en-tête HTTP à l'en-tête Vary
438         est nécessaire à une mise en cache appropriée.
439         <p>Il faut garder à l'esprit que les conditions suivent une
440         logique de cout-circuit si le drapeau
441         '<strong><code>ornext|OR</code></strong>' est utilisé, et que de
442         ce fait, certaines d'entre elles ne seront pas évaluées.</p>
443         </li>
444
445         <li>A des fins de référence avant, on peut utiliser,
446         <code>%{LA-U:variable}</code>, qui
447         permet d'effectuer une sous-requête interne à base d'URL, afin
448         de déterminer la valeur finale de <em>variable</em>. Ceci permet
449         d'accéder à la valeur d'une variable pour la réécriture inconnue
450         à ce stade du traitement, mais qui sera définie au
451         cours d'une phase ultérieure.
452         <p>Par exemple, pour effectuer une réécriture dépendant de la
453         variable <code>REMOTE_USER</code> dans le contexte du serveur
454         principal (fichier <code>httpd.conf</code>), vous devez utiliser
455         <code>%{LA-U:REMOTE_USER}</code> - cette variable est définie
456         par la phase d'autorisation qui intervient <em>après</em> la
457         phase de traduction d'URL (pendant laquelle mod_rewrite opère).</p>
458         <p>Par contre, comme mod_rewrite implémente son contexte de
459         répertoire (fichier <code>.htaccess</code>) via la phase Fixup
460         de l'API, et comme la phase d'autorisation intervient
461         <em>avant</em> cette dernière, vous pouvez vous contenter
462         d'utiliser <code>%{REMOTE_USER}</code> dans ce contexte.</p></li>
463
464         <li>
465         <code>%{LA-F:variable}</code> peut être utilisée pour effectuer
466         une sous-requête interne (basée sur le nom de fichier), afin de
467         déterminer la valeur finale de <em>variable</em>. La plupart du
468         temps, elle est identique à LA-U (voir ci-dessus).</li>
469       </ol>
470
471
472       <p><em>expression de comparaison</em> est une expression
473       rationnelle qui est appliquée à l'instance actuelle de
474       <em>chaîne de test</em>. <em>chaîne de test</em> est d'abord
475       évaluée, puis comparée à
476       l'<em>expression de comparaison</em>.</p>
477
478       <p><em>expression de comparaison</em> est en général une
479       <em>expression rationnelle compatible perl</em>, mais vous
480       disposez des syntaxes supplémentaires suivantes pour effectuer
481       d'autres tests utiles sur <em>chaîne de test</em> :
482       </p>
483
484       <ol>
485         <li>Vous pouvez préfixer l'expression avec un caractère
486         '<code>!</code>' (point d'exclamation) pour indiquer une
487         expression de <strong>non</strong>-correspondance.</li>
488
489         <li>Vous pouvez effectuer des comparaisons lexicographiques de
490         chaînes :
491
492           <ul>
493             <li>'<strong>&lt;expression</strong>' (inférieur au sens
494             lexicographique)<br />
495             Traite l'<em>expression</em> comme une chaîne de
496             caractères et la compare lexicographiquement à
497             <em>chaîne de test</em>. La condition est satisfaite si
498             <em>chaîne de test</em> est inférieure au sens
499             lexicographique à l'<em>expression</em>.</li>
500
501             <li>'<strong>&gt;expression</strong>' (supérieur au sens
502             lexicographique)<br />
503             Traite l'<em>expression</em> comme une chaîne de
504             caractères et la compare lexicographiquement à
505             <em>chaîne de test</em>. La condition est satisfaite si
506             <em>chaîne de test</em> est supérieure au sens
507             lexicographique à l'<em>expression</em>.</li>
508
509             <li>'<strong>=expression</strong>' (égal au sens
510             lexicographique)<br />
511             Traite l'<em>expression</em> comme une chaîne de
512             caractères et la compare lexicographiquement à
513             <em>chaîne de test</em>. La condition est satisfaite si
514             <em>chaîne de test</em> est égale au sens
515             lexicographique à l'<em>expression</em> (les deux chaînes
516             sont exactement identiques, caractère pour caractère). Si
517             <em>expression</em> est <code>""</code> (deux guillemets),
518             <em>chaîne de test</em> est comparée à la chaîne vide.</li>
519
520             <li>'<strong>&lt;=expression de comparaison</strong>' (inférieur ou égal à
521             au sens lexicographique)<br />
522             Considère l'<em>expression de comparaison</em> comme une
523             chaîne de caractères et la compare au sens lexicographique à
524             la <em>chaîne de test</em>. Vrai si <em>chaîne de test</em>
525             précède lexicographiquement <em>expression de comparaison</em>, ou est
526             égale à <em>expression de comparaison</em> (les deux chaînes
527             sont identiques, caractère pour caractère).</li>
528
529             <li>'<strong>&gt;=expression de comparaison</strong>'
530             (supérieur ou égal à au sens lexicographique)<br />
531             Considère l'<em>expression de comparaison</em> comme une
532             chaîne de caractères et la compare au sens lexicographique à
533             la <em>chaîne de test</em>. Vrai si <em>chaîne de test</em>
534             suit lexicographiquement <em>expression de comparaison</em>, ou est
535             égale à <em>expression de comparaison</em> (les deux chaînes
536             sont identiques, caractère pour caractère).</li>
537         </ul></li>
538
539         <li>
540           Vous pouvez effectuer des comparaisons d'entiers :
541           <ul>
542
543             <li>'<strong>-eq</strong>' (est numériquement égal à)<br />
544             La <em>chaîne de test</em> est considérée comme un entier,
545             et est comparée numériquement à l'<em>expression de
546             comparaison</em>. Vrai si les deux expressions sont
547             numériquement égales.</li>
548
549             <li>'<strong>-ge</strong>' (est numériquement supérieur ou
550             égal à)<br />
551             La <em>chaîne de test</em> est considérée comme un entier,
552             et est comparée numériquement à l'<em>expression de
553             comparaison</em>. Vrai si <em>chaîne de test</em> est
554             numériquement
555             supérieure ou égale à <em>expression de comparaison</em>.</li>
556
557              <li>'<strong>-gt</strong>' (est numériquement supérieur à)<br />
558             La <em>chaîne de test</em> est considérée comme un entier,
559             et est comparée numériquement à l'<em>expression de
560             comparaison</em>. Vrai si <em>chaîne de test</em> est
561             numériquement
562             supérieure à <em>expression de comparaison</em>.</li>
563
564             <li>'<strong>-le</strong>' (est numériquement inférieur ou
565             égal à)<br />
566             La <em>chaîne de test</em> est considérée comme un entier,
567             et est comparée numériquement à l'<em>expression de
568             comparaison</em>. Vrai si <em>chaîne de test</em> est
569             numériquement
570             inférieure ou égale à <em>expression de comparaison</em>.
571             Attention à la confusion avec le drapeau <strong>-l</strong>
572             en utilisant la variante the <strong>-L</strong> ou
573             <strong>-h</strong>.</li>
574
575              <li>'<strong>-lt</strong>' (est numériquement inférieur à)<br />
576             La <em>chaîne de test</em> est considérée comme un entier,
577             et est comparée numériquement à l'<em>expression de
578             comparaison</em>. Vrai si <em>chaîne de test</em> est
579             numériquement
580             inférieure à <em>expression de comparaison</em>.
581             Attention à la confusion avec le drapeau <strong>-l</strong>
582             en utilisant la variante the <strong>-L</strong> ou
583             <strong>-h</strong>.</li>
584
585            </ul>
586         </li>
587
588         <li>Vous pouvez effectuer différents tests sur les attributs de
589         fichier :
590           <ul>
591
592             <li>'<strong>-d</strong>' (est un répertoire -
593             <strong>d</strong>irectory)<br />
594             Traite <em>chaîne de test</em> comme un chemin et vérifie
595             s'il existe ou pas, et s'il s'agit d'un répertoire.</li>
596
597             <li>'<strong>-f</strong>' (est un
598             <strong>f</strong>ichier régulier)<br />
599             Traite <em>chaîne de test</em> comme un chemin et vérifie
600             s'il existe ou pas, et s'il s'agit d'un fichier régulier.</li>
601
602             <li>'<strong>-F</strong>' (test de l'existence d'un fichier
603             via une sous-requête)<br />
604             Vérifie si <em>chaîne de test</em> est un fichier valide,
605             accessible à travers tous les contrôles d'accès du serveur
606             actuellement configurés pour ce chemin. C'est une
607             sous-requête interne qui effectue cette vérification - à
608             utiliser avec précautions car les performances du serveur
609             peuvent s'en trouver affectées !</li>
610
611             <li>'<strong>-H</strong>' (est un lien symbolique, selon la
612             convention bash)<br />
613             Voir <strong>-l</strong>.</li>
614
615             <li>'<strong>-l</strong>' (est un lien symbolique)<br />
616             Considère la <em>chaîne de test</em> comme un chemin et
617             vérifie son existence et si elle est un lien symbolique. On
618             peut aussi utiliser la convention bash <strong>-L</strong>
619             ou <strong>-h</strong> lorsqu'il y a risque de confusion
620             avec les tests <strong>-lt</strong> ou <strong>-le</strong>.</li>
621
622             <li>'<strong>-L</strong>' (est un lien symbolique, selon la
623             convention bash)<br />
624             Voir <strong>-l</strong>.</li>
625
626             <li>'<strong>-s</strong>' (est un fichier régulier d'une
627             certaine taille)<br />
628             Considère la <em>chaîne de test</em> comme un chemin et
629             vérifie son existence et si elle est un fichier régulier
630             d'une taille supérieure à zéro.</li>
631
632             <li>'<strong>-U</strong>' (test de l'existence d'une
633             <strong>U</strong>RL via une sous-requête)<br />
634             Vérifie si <em>chaîne de test</em> est une URL valide,
635             accessible à travers tous les contrôles d'accès du serveur
636             actuellement configurés pour ce chemin. C'est une
637             sous-requête interne qui effectue cette vérification - à
638             utiliser avec précautions car les performances du serveur
639             peuvent s'en trouver affectées !</li>
640
641           <li>'<strong>-x</strong>' (a l'attribut d'exécution positionné)<br />
642             Considère la <em>chaîne de test</em> comme un chemin et
643             vérifie son existence et si elle a son attribut d'exécution
644             positionné. Ce positionnement est déterminé en fonction de
645             l'OS sous-jacent.</li>
646
647             </ul>
648
649 <div class="note"><h3>Note :</h3>
650               Tous ces tests peuvent aussi être préfixés par un point
651               d'exclamation ('!') pour inverser leur signification.
652 </div>
653         </li>
654
655         <li>
656            <p>Si la <em>chaîne de test</em> contient la valeur spéciale
657            <code>expr</code>, la <em>chaîne de comparaison</em> sera
658            traitée en tant qu'expression rationnelle de type <a href="../expr.html">ap_expr</a>.</p>
659
660            <p>
661             Dans l'exemple ci-dessous, on utilise <code>-strmatch</code>
662             pour comparer le <code>REFERER</code> avec le nom d'hôte du
663             site afin de bloquer le hotlinking (référencement direct)
664             non désiré.
665            </p>
666
667            <div class="example"><p><code>
668            RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'"<br />
669            RewriteRule ^/images - [F]
670            </code></p></div>
671         </li>
672
673         <li>Vous pouvez aussi définir certains drapeaux pour
674         l'<em>expression de comparaison</em> en ajoutant ces
675         <strong><code>[</code><em>drapeaux</em><code>]</code></strong>
676         comme troisième argument de la directive
677         <code>RewriteCond</code>, où <em>drapeaux</em> est un
678         sous-ensemble séparé par des virgules des drapeaux suivants :
679
680       <ul>
681         <li>'<strong><code>nocase|NC</code></strong>'
682         (<strong>n</strong>o <strong>c</strong>ase)<br />
683         Rend le test insensible à la casse - il n'est pas fait de
684         distinction entre majuscules et minuscules, à la fois dans le
685         développement de <em>chaîne de test</em> et dans
686         <em>expression de comparaison</em>. Ce drapeau n'est pris en
687         compte que lors d'une comparaison entre <em>chaîne de test</em>
688         et <em>expression de comparaison</em>. Il ne l'est pas pour les
689         vérification par sous-requêtes ou sur le système de
690         fichiers.</li>
691
692         <li>
693           '<strong><code>ornext|OR</code></strong>'
694           (<strong>ou</strong> condition suivante)<br />
695           Permet de chaîner les conditions de règles avec un OU au
696           lieu du AND implicite. Exemple typique :
697
698 <div class="example"><pre>
699 RewriteCond %{REMOTE_HOST}  ^host1  [OR]
700 RewriteCond %{REMOTE_HOST}  ^host2  [OR]
701 RewriteCond %{REMOTE_HOST}  ^host3
702 RewriteRule ...règles concernant tous ces hôtes...
703 </pre></div>
704
705           Sans ce drapeau, les paires
706           condition/règle devraient être écrites trois fois.
707         </li>
708
709         <li>'<strong><code>novary|NV</code></strong>'
710         (<strong>n</strong>o <strong>v</strong>ary)<br />
711         Si la condition contient un en-tête HTTP, ce drapeau empêche
712         ce dernier d'être ajouté à l'en-tête Vary de la réponse. <br />
713         L'utilisation de ce drapeau peut provoquer une mise en cache
714         incorrecte de la réponse, si la représentation de cette réponse
715         varie avec la valeur de l'en-tête considéré. Ce drapeau ne
716         devrait donc être utilisé que si l'on maîtrise parfaitement le
717         fonctionnement de l'en-tête Vary.
718         </li>
719       </ul>
720       </li>
721      </ol>
722
723       <p><strong>Exemple :</strong></p>
724
725        <p>Pour réécrire la page d'accueil d'un site en fonction de
726        l'en-tête ``<code>User-Agent:</code>'' de la requête, vous
727        pouvez utiliser ce qui suit : </p>
728
729 <div class="example"><pre>
730 RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla
731 RewriteRule  ^/$                 /homepage.max.html  [L]
732
733 RewriteCond  %{HTTP_USER_AGENT}  ^Lynx
734 RewriteRule  ^/$                 /homepage.min.html  [L]
735
736 RewriteRule  ^/$                 /homepage.std.html  [L]
737 </pre></div>
738
739         <p>Explications : si vous utilisez un navigateur
740         (Netscape Navigator, Mozilla etc) qui s'identifie comme
741         'Mozilla', vous accèderez à la page d'accueil max (qui
742         peut contenir des frames, ou d'autres ressources
743         particulières).
744         Si vous utilisez le navigateur Lynx (qui est un navigateur
745         en mode texte), vous accèderez à une page d'accueil min
746         (qui peut être une version conçue pour une navigation simple
747         basée sur le texte).
748         Si aucune de ces conditions n'est satisfaite (vous utilisez tout
749         autre navigateur, ou votre navigateur s'identifie de manière non
750         standard), vous accèderez à la page d'accueil std
751         (standard).</p>
752
753
754 </div>
755 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
756 <div class="directive-section"><h2><a name="RewriteEngine" id="RewriteEngine">RewriteEngine</a> <a name="rewriteengine" id="rewriteengine">Directive</a></h2>
757 <table class="directive">
758 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Active ou désactive l'exécution du
759 moteur de réécriture</td></tr>
760 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteEngine on|off</code></td></tr>
761 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>RewriteEngine off</code></td></tr>
762 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
763 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
764 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
765 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
766 </table>
767
768       <p>La directive <code class="directive">RewriteEngine</code> active ou
769       désactive l'exécution du moteur de réécriture. Si sa valeur est
770       <code>off</code>, ce module n'exécutera aucun traitement et ne
771       mettra pas à jour les variables d'environnement
772       <code>SCRIPT_URx</code>.</p>
773
774       <p>Pour désactiver le module, il vaut mieux utiliser cette
775       directive que commenter toutes les directives <code class="directive"><a href="#rewriterule">RewriteRule</a></code> !</p>
776
777       <p>Notez que les  hôtes virtuels n'héritent pas des
778       configurations de réécriture. Ceci implique que vous devez
779       insérer une directive <code>RewriteEngine on</code> dans chaque
780       hôte virtuel pour lequel vous souhaitez utiliser des règles
781       de réécriture.</p>
782
783       <p>Les directives <code class="directive">RewriteMap</code> du type
784       <code>prg</code> ne sont pas prises en compte au cours de
785       l'initialisation du serveur si elle ont été définies dans un
786       contexte où la directive <code class="directive">RewriteEngine</code> n'a
787       pas été définie à <code>on</code>.</p>
788
789
790 </div>
791 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
792 <div class="directive-section"><h2><a name="RewriteMap" id="RewriteMap">RewriteMap</a> <a name="rewritemap" id="rewritemap">Directive</a></h2>
793 <table class="directive">
794 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit une fonction de mise en correspondance pour la
795 recherche de mots-clés</td></tr>
796 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteMap <em>nom de la correspondance</em> <em>type de
797 correspondance</em>:<em>source de la correspondance</em>
798 </code></td></tr>
799 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel</td></tr>
800 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
801 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
802 <tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Il est possible de choisir entre plusieurs types de
803 bases de données depuis la version 2.0.41 du serveur HTTP Apache</td></tr>
804 </table>
805       <p>La directive <code class="directive">RewriteMap</code> définit une
806       <em>Table de correspondance pour la réécriture</em> que les
807       fonctions de mise en correspondance
808       peuvent utiliser dans les chaînes de substitution des règles
809       pour insérer/substituer des champs en recherchant des mots-clés.
810       La source utilisée pour cette recherche peut être de plusieurs
811       types.</p>
812
813       <p><a id="mapfunc" name="mapfunc"><em>nom de la
814       correspondance</em></a> est le nom de la table de correspondance
815       et servira à spécifier une fonction de mise en correspondance
816       pour les chaînes de substitution d'une règle de réécriture selon
817       une des constructions suivantes :</p>
818
819       <p class="indent">
820         <strong><code>${</code> <em>nom de la
821       correspondance</em> <code>:</code>
822         <em>mot-clé</em> <code>}</code><br />
823          <code>${</code> <em>nom de la
824       correspondance</em> <code>:</code>
825         <em>mot-clé</em> <code>|</code> <em>valeur par défaut</em>
826         <code>}</code></strong>
827       </p>
828
829       <p>Lorsqu'une telle construction est rencontrée, la table de
830       correspondance <em>Nom de la correspondance</em> est consultée
831       et la clé <em>mot-clé</em> recherchée. Si la clé est trouvée, la
832       construction est remplacée par
833       la <em>valeur de remplacement</em>. Si la clé n'est pas trouvée,
834       elle est remplacée par la <em>valeur par défaut</em>, ou par une
835       chaîne vide si aucune <em>valeur par défaut</em> n'est
836       spécifiée. La valeur vide se comporte comme si la
837       clé était absente ; il est donc impossible de distinguer une
838       valeur vide d'une absence de clé.</p>
839
840       <p>Par exemple, vous pouvez définir une directive
841       <code class="directive">RewriteMap</code> comme suit </p>
842
843       <div class="example"><p><code>
844       RewriteMap map-exemple txt:/chemin/vers/fichier/map.txt
845       </code></p></div>
846
847       <p>Vous pourrez ensuite utiliser cette table dans une
848       directive <code class="directive">RewriteRule</code> comme suit :</p>
849
850       <div class="example"><p><code>
851       RewriteRule ^/ex/(.*) ${map-exemple:$1}
852       </code></p></div>
853
854       <p>Les combinaisons suivantes pour <em>type de correspondance</em>
855       et <em>source de la correspondance</em>
856       peuvent être utilisées :</p>
857
858 <dl>
859     <dt>txt</dt>
860         <dd>Un fichier texte contenant des paires clé-valeur séparées
861         par des espaces, une paire par ligne (<a href="../rewrite/rewritemap.html#txt">Détails ...</a>).</dd>
862
863     <dt>rnd</dt>
864         <dd>Sélection aléatoire d'une entrée depuis un fichier texte (<a href="../rewrite/rewritemap.html#rnd">Détails ...</a>).</dd>
865
866     <dt>dbm</dt>
867         <dd>Recherche une entrée dans un fichier dbm contenant des
868         paires nom-valeur. Le condensé hash est élaboré à partir d'un
869         format de fichier texte via l'utilitaire <code><a href="../programs/httxt2dbm.html">httxt2dbm</a></code> (<a href="../rewrite/rewritemap.html#dbm">Détails ...</a>).</dd>
870
871     <dt>int</dt>
872         <dd>Une des quatre fonctions internes disponibles que fournit
873         <code>RewriteMap</code>: toupper, tolower, escape ou unescape
874         (<a href="../rewrite/rewritemap.html#int">Détails ...</a>).</dd>
875
876     <dt>prg</dt>
877         <dd>Appelle un programme externe ou un script pour effectuer la
878         réécriture (<a href="../rewrite/rewritemap.html#int">Détails
879         ...</a>).</dd>
880
881     <dt>dbd or fastdbd</dt>
882         <dd>Une commande SQL SELECT à exécuter pour rechercher la cible
883         de réécriture (<a href="../rewrite/rewritemap.html#int">Détails
884         ...</a>).</dd>
885     </dl>
886
887 <p>Vous trouverez plus de détails et de nombreux exemples dans le <a href="../rewrite/rewritemap.html">RewriteMap HowTo</a>.</p>
888
889
890 </div>
891 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
892 <div class="directive-section"><h2><a name="RewriteOptions" id="RewriteOptions">RewriteOptions</a> <a name="rewriteoptions" id="rewriteoptions">Directive</a></h2>
893 <table class="directive">
894 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure certaines options spéciales
895 pour le moteur de réécriture</td></tr>
896 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteOptions <var>Options</var></code></td></tr>
897 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
898 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
899 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
900 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
901 <tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td><code>MaxRedirects</code> n'est plus disponible depuis
902 la version version 2.1</td></tr>
903 </table>
904
905       <p>La directive <code class="directive">RewriteOptions</code> définit
906       certaines options spéciales pour la configuration au niveau du
907       serveur ou du répertoire. La chaîne de caractères <em>Option</em>
908       ne peut actuellement prendre qu'une des valeurs suivantes :</p>
909
910       <dl>
911       <dt><code>Inherit</code></dt>
912       <dd>
913
914       <p>Ceci force la configuration locale à hériter de la
915       configuration du niveau supérieur. Dans le contexte des hôtes
916       virtuels, cela signifie que les correspondances, conditions et
917       règles du serveur principal sont héritées. Dans le contexte des
918       répertoires, cela signifie que les conditions et règles de la
919       configuration <code>.htaccess</code> ou les sections <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> du répertoire
920       parent sont héritées. Les règles héritées sont virtuellement
921       copiées dans la section où cette directive est utilisée. Si elles
922       sont utilisées avec des règles locales, les règles héritées sont
923       placées après ces dernières. La place de cette directive - avant
924       ou après les règles locales - n'a aucune influence sur ce
925       comportement. Si des règles locales ont forcé l'arrêt de la
926       réécriture, les règles héritées ne seront pas traitées.</p>
927
928       <div class="warning">
929       Les règles héritées du niveau parent sont appliquées
930       <strong>after</strong> après les règles spécifiées dans le niveau
931       enfant.
932       </div>
933       </dd>
934
935       <dt><code>InheritBefore</code></dt>
936       <dd>
937       <p>Même effet que l'option <code>Inherit</code> ci-dessus, mais
938       les règles spécifiées dans le niveau parent s'appliquent
939       <strong>avant</strong> les règles spécifiées dans le niveau
940       enfant. Disponible depuis la version 2.3.10 du serveur HTTP
941       Apache.</p>
942       </dd>
943
944       <dt><code>AllowNoSlash</code></dt>
945       <dd>
946       <p>Par défaut, <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> ignore les URLs qui
947       correspondent à un répertoire sur disque, mais ne comportent pas
948       de slash final, afin que le module <code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code>
949       redirige le client vers l'URL canonique avec un slash final.</p>
950       
951       <p>Lorsque la directive <code class="directive"><a href="../mod/mod_dir.html#directoryslash">DirectorySlash</a></code> est définie à off, il
952       est possible de spécifier l'option <code>AllowNoSlash</code> pour
953       s'assurer que les règles de réécriture ne soient plus ignorées.
954       Si on le souhaite, cette option permet de faire s'appliquer des
955       règles de réécriture qui correspondent à un répertoire sans slash
956       final au sein de fichiers .htaccess. Elle est disponible à
957       partir de la version 2.4.0 du serveur HTTP Apache.
958       
959       When the <code class="directive"><a href="../mod/mod_dir.html#directoryslash">DirectorySlash</a></code> directive
960 +      is set to off, the <code>AllowNoSlash</code> option can be enabled to ensure
961 +      that rewrite rules are no longer ignored. This option makes it possible to
962 +      apply rewrite rules within .htaccess files that match the directory without
963 +      a trailing slash, if so desired. Available in Apache HTTP Server 2.4.0 and
964 +      later.</p>
965 +      </dd>
966
967       </dl>
968
969 </div>
970 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
971 <div class="directive-section"><h2><a name="RewriteRule" id="RewriteRule">RewriteRule</a> <a name="rewriterule" id="rewriterule">Directive</a></h2>
972 <table class="directive">
973 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit les règles pour le moteur de réécriture</td></tr>
974 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RewriteRule
975       <em>Modèle</em> <em>Substitution</em> [<em>drapeaux</em>]</code></td></tr>
976 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur, serveur virtuel, répertoire, .htaccess</td></tr>
977 <tr><th><a href="directive-dict.html#Override">AllowOverride:</a></th><td>FileInfo</td></tr>
978 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
979 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_rewrite</td></tr>
980 </table>
981       <p>La directive <code class="directive">RewriteRule</code> est le
982       véritable cheval de trait de la réécriture. La directive peut
983       apparaître plusieurs fois, chaque instance définissant une
984       règle de réécriture particulière. L'ordre dans lequel ces règles
985       sont définies est important - il s'agit de l'ordre dans lequel
986       les règles seront appliquées au cours du processus de
987       réécriture.</p>
988
989       <p><a id="patterns" name="patterns"><em>Modèle</em></a> est une
990       <a id="regexp" name="regexp">expression rationnelle</a>
991       compatible perl. Dans la première règle de réécriture,
992       l'expression est comparée au (%-decoded)
993       <a href="./directive-dict.html#Syntax">chemin de l'URL</a> de la
994       requête ; les expressions suivantes sont comparées à la sortie de
995       la dernière règle de réécriture qui a été appliquée.</p>
996
997 <div class="note"><h3><a id="what_is_matched" name="what_is_matched">Qu'est-ce qui est comparé ?</a></h3>
998
999       <p>Dans un contexte de serveur virtuel <code class="directive"><a href="../mod/core.html#virtualhost">VirtualHost</a></code>, le <em>modèle</em> est tout
1000       d'abord comparé à la portion de l'URL située entre le nom d'hôte
1001       éventuellement accompagné du port, et la chaîne de paramètres (par
1002       exemple "/app1/index.html").</p>
1003
1004       <p>Dans les contextes de répertoire <code class="directive"><a href="../mod/core.html#directory">Directory</a></code> et htaccess, le
1005       <em>modèle</em> est tout d'abord comparé au chemin du <em>système
1006       de fichiers</em>, après suppression du préfixe ou chemin de base
1007       ayant conduit à la règle <code class="directive">RewriteRule</code> (par
1008       exemple "app1/index.html" ou
1009       "index.html" selon l'endroit où les directives sont définies).</p>
1010
1011       <p>Si vous souhaitez faire une comparaison sur le nom
1012       d'hôte, le port, ou la chaîne de requête, utilisez une
1013       directive <code class="directive"><a href="#rewritecond">RewriteCond</a></code>
1014       comportant respectivement les variables
1015       <code>%{HTTP_HOST}</code>, <code>%{SERVER_PORT}</code>, ou
1016       <code>%{QUERY_STRING}</code>.</p>
1017 </div>
1018
1019 <div class="note"><h3>Réécritures dans un contexte de répertoire</h3>
1020 <ul>
1021 <li>L'utilisation du moteur de réécriture dans les
1022 fichiers <a href="../howto/htaccess.html">.htaccess</a> et les sections
1023 <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> est un peu plus
1024 complexe.</li>
1025
1026 <li>Pour activer le moteur de réécriture dans ces contextes, vous devez
1027 définir "<code>RewriteEngine On</code>" <strong>et</strong>
1028 "<code>Options FollowSymLinks</code>". Si l'administrateur a désactivé
1029 la possibilité de modifier l'option <code>FollowSymLinks</code> au
1030 niveau du répertoire d'un utilisateur, vous ne pouvez pas utiliser le
1031 moteur de réécriture. Cette restriction a été instaurée à des fins de
1032 sécurité.</li>
1033
1034 <li>Lorsqu'on utilise le moteur de réécriture dans un fichier
1035 <code>.htaccess</code>, le chemin de base du répertoire courant (qui est
1036 toujours le même pour ce même répertoire) est automatiquement
1037 <em>supprimé</em> au cours de la comparaison avec le modèle de la règle
1038 de réécriture, et automatiquement <em>ajouté</em> lorsqu'une
1039 substitution relative (ne débutant pas par un slash ou un nom de
1040 protocole) arrive à la fin d'un jeu de règles. Voir la directive
1041 <code class="directive"><a href="#rewritebase">RewriteBase</a></code> pour plus de
1042 détails à propos de l'ajout du préfixe après les substitutions
1043 relatives.</li>
1044
1045 <li>Si vous souhaitez effectuer une comparaison en prenant en compte
1046 l'intégralité du
1047 chemin de l'URL dans un contexte de répertoire (htaccess), vous devez
1048 utiliser la variable <code>%{REQUEST_URI}</code> dans la directive
1049 <code class="directive">RewriteCond</code>.</li>
1050
1051 <li>Le prefixe supprimé se termine toujours par un slash, ce qui
1052 signifie que la comparaison s'effectue avec une chaîne qui ne comporte
1053 <em>jamais</em> de slash de début. Ainsi, un <em>modèle</em> contenant
1054 <code>^/</code> ne correspondra jamais dans un contexte de répertoire.</li>
1055
1056 <li>Bien que les règles de réécriture soient permises du point de vue de
1057 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>, elles n'y sont pas prises en compte, et
1058 n'y sont à priori d'aucune utilité.</li>
1059 </ul>
1060 </div>
1061
1062         <p>Pour quelques conseils à propos des <a class="glossarylink" href="../glossary.html#regex" title="voir glossaire">expressions rationnelles</a>, voir le
1063         document <a href="../rewrite/intro.html#regex">Introduction à
1064         mod_rewrite</a>.</p>
1065
1066       <p>Dans mod_rewrite, on peut aussi utiliser le caractère NON
1067       ('<code>!</code>') comme préfixe de modèle. Ceci vous permet
1068       d'inverser la signification d'un modèle, soit pour dire
1069       ``<em>si l'URL considérée ne correspond <strong>PAS</strong> à
1070       ce modèle</em>''. Le caractère NON peut donc être utilisé à
1071       titre exceptionnel, lorsqu'il est plus simple d'effectuer une
1072       comparaison avec le modèle inversé, ou dans la dernière règle
1073       par défaut.</p>
1074
1075 <div class="note"><h3>Note</h3>
1076 Si vous utilisez le caractère NON pour inverser la signification d'un
1077 modèle, vous ne pouvez pas inclure de parties génériques groupées dans
1078 le modèle. Ceci est dû au fait que, lorsque le modèle ne correspond
1079 pas (autrement dit, sa négation correspond), les groupes sont vides.
1080 Ainsi, si vous utilisez des modèles inversés, vous ne pouvez
1081 pas vous référer aux groupes par <code>$N</code> dans la chaîne de
1082 substitution !
1083 </div>
1084
1085       <p>Dans une règle de réécriture,
1086       <a id="rhs" name="rhs"><em>Substitution</em></a> est la chaîne
1087       de caractères qui remplace le chemin de l'URL original qui
1088       correspondait au <em>Modèle</em>. <em>Substitution</em> peut
1089       être :</p>
1090
1091       <dl>
1092
1093         <dt>un chemin du système de fichiers</dt>
1094
1095         <dd>Il indique alors la localisation dans le système de
1096         fichiers de la ressource qui doit être envoyée au client.</dd>
1097
1098         <dt>chemin d'URL</dt>
1099
1100         <dd>Un chemin relatif à la valeur de <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> vers la ressource qui
1101         doit être servie. Notez que <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
1102         essaie de deviner si vous avez spécifié un chemin du système
1103         de fichiers ou un chemin d'URL en vérifiant si la première
1104         partie du chemin existe à la racine du système de fichiers.
1105         Par exemple, si vous avez spécifié comme chaîne de
1106         <em>Substitution</em> <code>/www/file.html</code>, cette
1107         dernière sera traitée comme un chemin d'URL <em>à moins</em>
1108         qu'un répertoire nommé <code>www</code> n'existe à la racine
1109         de votre système de fichiers, auquel cas la chaîne de
1110         substitution sera traitée comme un chemin du système de
1111         fichiers. Si vous désirez que d'autres directives de
1112         correspondance d'URL (comme la directive <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>) soient appliquées au
1113         chemin d'URL résultant, utilisez le drapeau <code>[PT]</code>
1114         comme décrit ci-dessous.</dd>
1115
1116         <dt>URL absolue</dt>
1117
1118         <dd>Si une URL absolue est spécifiée,
1119         <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> vérifie si le nom d'hôte
1120         correspond à celui de l'hôte local. Si c'est le cas, le
1121         protocole et le nom d'hôte sont supprimés, et ce qui reste est
1122         traité comme un chemin d'URL. Dans le cas contraire, une
1123         redirection externe vers l'URL indiquée est effectuée. Pour
1124         forcer une redirection externe vers l'hôte local, voir le
1125         drapeau <code>[R]</code> ci-dessous.</dd>
1126
1127         <dt><code>-</code> (tiret)</dt>
1128
1129         <dd>Un tiret indique qu'aucune substitution ne doit être
1130         effectuée (le chemin considéré est transmis sans changement).
1131         Ceci est utile quand un drapeau doit être appliqué sans
1132         modifier le chemin (voir ci-dessous).</dd>
1133
1134       </dl>
1135
1136       <p>En plus du texte, la chaîne <em>Substition</em> peut
1137       comporter :</p>
1138
1139       <ol>
1140         <li>des références arrières (<code>$N</code>) vers le modèle
1141         d'une directive RewriteRule</li>
1142
1143         <li>des références arrières (<code>%N</code>) vers le dernier
1144         modèle d'une directive RewriteCond qui correspondait</li>
1145
1146         <li>des variables du serveur comme dans les chaînes de test de
1147         condition d'une règle (<code>%{VARNAME}</code>)</li>
1148
1149         <li>des appels de
1150         <a href="#mapfunc">fonctions de comparaison</a>
1151         (<code>${nom correspondance:clé|défaut}</code>)</li>
1152       </ol>
1153
1154       <p>Les références arrières sont des identificateurs de la forme
1155       <code>$</code><strong>N</strong> (<strong>N</strong>=0..9), qui
1156       seront remplacés par le contenu du <strong>N</strong>ème groupe
1157       du <em>Modèle</em> qui correspondait. Les variables du serveur
1158       sont les mêmes que dans la <em>Chaîne de test</em> d'une
1159       directive <code>RewriteCond</code>. Les fonctions de comparaison
1160       sont issues de la directive <code>RewriteMap</code> dans la
1161       section de laquelle elles sont décrites. Ces trois types de
1162       variables sont évaluées dans l'ordre ci-dessus.</p>
1163
1164        <p>Chaque règle de réécriture s'applique au résultat de la règle
1165        précédente, selon l'ordre dans lequel elles ont été définies dans
1166        le fichier de configuration. L'URI du chemin du fichier (voir
1167        ci-dessus <a href="#what_is_matched">Qu'est-ce qui est
1168        comparé ?</a>) est <strong>intégralement
1169       remplacée</strong> par la chaîne de <em>Substitution</em> et le
1170       processus de réécriture se poursuit jusqu'à ce que toutes les
1171       règles aient été appliquées, ou qu'il soit explicitement stoppé
1172       par un drapeau <a href="../rewrite/flags.html#flag_l"><code><strong>L</strong></code></a>,
1173       ou par un autre drapeau qui implique un arrêt immédiat, comme
1174       <code><strong>END</strong></code> ou
1175       <code><strong>F</strong></code>.</p>
1176
1177      <div class="note"><h3>Modifier la chaîne de requête</h3>
1178       <p>Par défaut, la chaîne de requête est transmise sans
1179       modification. Vous pouvez cependant créer dans la chaîne de
1180       substitution des URLs dont une partie constitue une chaîne de
1181       requête. Pour cela, ajoutez simplement un point d'interrogation
1182       dans la chaîne de substitution pour indiquer que le texte qui
1183       suit doit être réinjecté dans la chaîne de requête. Pour
1184       supprimer une chaîne de requête, terminez simplement la chaîne de
1185       substitution par un point d'interrogation. Pour combiner les
1186       nouvelles chaînes de requête avec les anciennes, utilisez le
1187       drapeau <code>[QSA]</code>.</p>
1188      </div>
1189
1190
1191       <p>En outre, vous pouvez spécifier des <a name="rewriteflags" id="rewriteflags">actions</a> spéciales à effectuer en ajoutant
1192       des
1193       <strong><code>[</code><em>drapeaux</em><code>]</code></strong>
1194       comme troisième argument de la directive
1195       <code>RewriteRule</code>. Séparés par des virgules au sein d'une
1196       liste encadrée par des crochets, les <em>drapeaux</em> peuvent
1197       être choisis dans la table suivante. Vous trouverez plus de
1198       détails, et des exemples pour chaque drapeau dans le <a href="../rewrite/flags.html">document à propos des drapeaux de
1199       réécriture.</a></p>
1200
1201       <table class="bordered">
1202     <tr><th>Drapeaux et syntaxe</th>
1203         <th>Fonction</th>
1204     </tr>
1205     <tr>
1206         <td>B</td>
1207         <td>Echappe les caractères non-alphanumériques <em>avant</em>
1208         d'appliquer la transformation. <em><a href="../rewrite/flags.html#flag_b">détails ...</a></em></td>
1209     </tr>
1210     <tr>
1211         <td>chain|C</td>
1212         <td>La règle est chaînée avec la règle suivante. Si la règle
1213         échoue, la ou les règles avec lesquelles elle est est chaînée
1214         seront sautées. <em><a href="../rewrite/flags.html#flag_c">détails ...</a></em></td>
1215     </tr>
1216     <tr>
1217         <td>cookie|CO=<em>NAME</em>:<em>VAL</em></td>
1218         <td>Définit un cookie au niveau du navigateur client. La syntaxe
1219         complète est :
1220         CO=<em>NAME</em>:<em>VAL</em>:<em>domain</em>[:<em>lifetime</em>[:<em>path</em>[:<em>secure</em>[:<em>httponly</em>]]]] <em><a href="../rewrite/flags.html#flag_co">details ...</a></em>
1221         <em><a href="../rewrite/flags.html#flag_co">détails ...</a></em>
1222         </td>
1223     </tr>
1224     <tr>
1225         <td>discardpath|DPI</td>
1226         <td>Supprime la partie PATH_INFO de l'URI réécrit. <em><a href="../rewrite/flags.html#flag_dpi">détails
1227         ...</a></em></td>
1228     </tr>
1229     <tr>
1230         <td>env|E=[!]<em>VAR</em>[:<em>VAL</em>]</td>
1231         <td>Définit la variable d'environnement <em>VAR</em> (à la valeur
1232         <em>VAL</em> si elle est fournie). La variante !<em>VAR</em>
1233         annule la définition de la variable <em>VAR</em>.<em><a href="../rewrite/flags.html#flag_e">détails ...</a></em></td>
1234     </tr>
1235     <tr>
1236         <td>forbidden|F</td>
1237         <td>Renvoie une réponse 403 FORBIDDEN au navigateur client.
1238         <em><a href="../rewrite/flags.html#flag_f">détails ...</a></em></td>
1239     </tr>
1240     <tr>
1241         <td>gone|G</td>
1242         <td>Renvoie un message d'erreur 410 GONE au navigateur client. <em><a href="../rewrite/flags.html#flag_g">détails ...</a></em></td>
1243     </tr>
1244     <tr>
1245         <td>Handler|H=<em>Gestionnaire de contenu</em></td>
1246         <td>L'URI résultant est envoyé au <em>Gestionnaire de
1247         contenu</em> pour traitement. <em><a href="../rewrite/flags.html#flag_h">détails ...</a></em></td>
1248     </tr>
1249     <tr>
1250         <td>last|L</td>
1251         <td>Arrête le processus de réécriture immédiatement et n'applique
1252         plus aucune règle. Prêtez une attention particulière aux mises
1253         en garde concernant les contextes de niveau répertoire et
1254         .htaccess (voir aussi le drapeau END). <em><a href="../rewrite/flags.html#flag_l">détails ...</a></em></td>
1255     </tr>
1256     <tr>
1257         <td>next|N</td>
1258         <td>Réexécute le processus de réécriture à partir de la première
1259         règle, en utilisant le résultat du jeu de règles, sous réserve
1260         qu'il y ait un point de départ. <em><a href="../rewrite/flags.html#flag_n">détails
1261         ...</a></em></td>
1262     </tr>
1263     <tr>
1264         <td>nocase|NC</td>
1265         <td>Rend la comparaison entre modèles insensible à la casse.
1266         <em><a href="../rewrite/flags.html#flag_nc">détails ...</a></em></td>
1267     </tr>
1268     <tr>
1269         <td>noescape|NE</td>
1270         <td>Empêche mod_rewrite d'effectuer un échappement hexadécimal
1271         des caractères spéciaux dans le résultat de la réécriture. <em><a href="../rewrite/flags.html#flag_ne">détails ...</a></em></td>
1272     </tr>
1273     <tr>
1274         <td>nosubreq|NS</td>
1275         <td>La règle est sautée si la requête courante est une
1276         sous-requête interne. <em><a href="../rewrite/flags.html#flag_ns">détails ...</a></em></td>
1277     </tr>
1278     <tr>
1279         <td>proxy|P</td>
1280         <td>Force l'envoi en interne de l'URL de substitution en tant
1281         que requête mandataire. <em><a href="../rewrite/flags.html#flag_p">détails
1282         ...</a></em></td>
1283     </tr>
1284     <tr>
1285         <td>passthrough|PT</td>
1286         <td>L'URI résultant est repassé au moteur de mise en
1287         correspondance des URLs pour y être traité par d'autres
1288         traducteurs URI-vers-nom de fichier, comme <code>Alias</code> ou
1289         <code>Redirect</code>. <em><a href="../rewrite/flags.html#flag_pt">détails ...</a></em></td>
1290     </tr>
1291     <tr>
1292         <td>qsappend|QSA</td>
1293         <td>Ajoute toute chaîne de paramètres créée dans la cible de
1294         réécriture à toute chaîne de paramètres présente dans l'URL de la
1295         requête originale. <em><a href="../rewrite/flags.html#flag_qsa">détails ...</a></em></td>
1296     </tr>
1297     <tr>
1298         <td>qsdiscard|QSD</td>
1299         <td>Supprime toute chaîne de paramètres de l'URI entrant. <em><a href="../rewrite/flags.html#flag_qsd">détails
1300         ...</a></em></td>
1301     </tr>
1302     <tr>
1303         <td>redirect|R[=<em>code</em>]</td>
1304         <td>Force une redirection externe, avec un code de statut HTTP
1305         optionnel. <em><a href="../rewrite/flags.html#flag_r">détails ...</a></em>
1306         </td>
1307     </tr>
1308     <tr>
1309         <td>END</td>
1310         <td>Arrête le processus de réécriture immédiatement et
1311         n'applique plus aucune règle. Empêche aussi l'exécution
1312         ultérieure de règles de réécriture dans des contextes de
1313         répertoire et des fichiers .htaccess (disponible depuis la
1314         version 2.3.9) <em><a href="../rewrite/flags.html#flag_l">détails ...</a></em></td>
1315     </tr>
1316     <tr>
1317         <td>skip|S=<em>nombre</em></td>
1318         <td>Si la règle courante s'applique, le moteur de réécriture
1319         doit sauter les <em>nombre</em> règles suivantes. <em><a href="../rewrite/flags.html#flag_s">détails ...</a></em></td>
1320     </tr>
1321     <tr>
1322         <td>type|T=<em>MIME-type</em></td>
1323         <td>Force l'attribution du <a class="glossarylink" href="../glossary.html#type-mime" title="voir glossaire">Type-MIME</a>
1324         spécifié au fichier cible. <em><a href="../rewrite/flags.html#flag_t">détails ...</a></em></td>
1325     </tr>
1326     </table>
1327
1328 <div class="note"><h3>Développement du répertoire home</h3>
1329 <p> Quand la chaîne de substitution commence par quelque chose comme
1330 "/~user" (de manière explicite ou par références arrières), mod_rewrite
1331 développe le répertoire home sans tenir compte de la présence ou de la
1332 configuration du module <code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code>.</p>
1333
1334 <p> Ce développement n'est pas effectué si le drapeau <em>PT</em> est
1335 utilisé dans la directive <code class="directive"><a href="#rewriterule">RewriteRule</a></code></p>
1336 </div>
1337
1338      <p>Voici toutes les combinaisons de substitution et leurs
1339      significations :</p>
1340
1341       <p><strong>Dans la configuration au niveau du serveur principal
1342       (<code>httpd.conf</code>)<br />
1343        pour la requête ``<code>GET
1344       /chemin/infochemin</code>'':</strong><br />
1345       </p>
1346
1347 <table class="bordered">
1348 <tr>
1349 <th>Règle</th>
1350 <th>Résultat de la substitution</th>
1351 </tr>
1352
1353 <tr>
1354 <td>^/un_chemin(.*) autre_chemin$1</td>
1355 <td>invalide, non supporté</td>
1356 </tr>
1357
1358 <tr>
1359 <td>^/un_chemin(.*) autre_chemin$1  [R]</td>
1360 <td>invalide, non supporté</td>
1361 </tr>
1362
1363 <tr>
1364 <td>^/un_chemin(.*) autre_chemin$1  [P]</td>
1365 <td>invalide, non supporté</td>
1366 </tr>
1367
1368 <tr>
1369 <td>^/un_chemin(.*) /autre_chemin$1</td>
1370 <td>/autre_chemin/info_chemin</td>
1371 </tr>
1372
1373 <tr>
1374 <td>^/un_chemin(.*) /autre_chemin$1 [R]</td>
1375 <td>http://cet_hote/autre_chemin/info_chemin via une redirection externe</td>
1376 </tr>
1377
1378 <tr>
1379 <td>^/un_chemin(.*) /autre_chemin$1 [P]</td>
1380 <td>sans objet, non supporté</td>
1381 </tr>
1382
1383 <tr>
1384 <td>^/un_chemin(.*) http://cet_hote/autre_chemin$1</td>
1385 <td>/autre_chemin/info_chemin</td>
1386 </tr>
1387
1388 <tr>
1389 <td>^/un_chemin(.*) http://cet_hote/autre_chemin$1 [R]</td>
1390 <td>http://cet_hote/autre_chemin/info_chemin via une redirection externe</td>
1391 </tr>
1392
1393 <tr>
1394 <td>^/un_chemin(.*) http://cet_hote/autre_chemin$1 [P]</td>
1395 <td>sans objet, non supporté</td>
1396 </tr>
1397
1398 <tr>
1399 <td>^/un_chemin(.*) http://autre_hote/autre_chemin$1</td>
1400 <td>http://autre_hote/autre_chemin/info_chemin via une redirection externe</td>
1401 </tr>
1402
1403 <tr>
1404 <td>^/un_chemin(.*) http://autre_hote/autre_chemin$1 [R]</td>
1405 <td>http://autre_hote/autre_chemin/info_chemin (le drapeau [R] est
1406 redondant)</td>
1407 </tr>
1408
1409 <tr>
1410 <td>^/somepath(.*) http://otherhost/otherpath$1 [P]</td>
1411 <td>http://otherhost/otherpath/pathinfo via internal proxy</td>
1412 </tr>
1413 </table>
1414
1415       <p><strong>Dans une configuration de niveau répertoire pour
1416       <code>/chemin</code><br />
1417        (<code>/chemin/physique/vers/chemin/.htacccess</code>, avec
1418       <code>RewriteBase /chemin</code>)<br />
1419        pour la requête ``<code>GET
1420       /chemin/chemin-local/infochemin</code>'':</strong><br />
1421      </p>
1422
1423 <table class="bordered">
1424
1425 <tr>
1426 <th>Règle</th>
1427 <th>Résultat de la substitution</th>
1428 </tr>
1429
1430 <tr>
1431 <td>^chemin-local(.*) autre-chemin$1</td>
1432 <td>/chemin/autre-chemin/infochemin</td>
1433 </tr>
1434
1435 <tr>
1436 <td>^chemin-local(.*) autre-chemin$1  [R]</td>
1437 <td>http://cet-hôte/chemin/autre-chemin/infochemin via redirection
1438 externe</td>
1439 </tr>
1440
1441 <tr>
1442 <td>^chemin-local(.*) autre-chemin$1  [P]</td>
1443 <td>n'a pas lieu d'être, non supporté</td>
1444 </tr>
1445
1446 <tr>
1447 <td>^chemin-local(.*) /autre-chemin$1</td>
1448 <td>/autre-chemin/infochemin</td>
1449 </tr>
1450
1451 <tr>
1452 <td>^chemin-local(.*) /autre-chemin$1 [R]</td>
1453 <td>http://cet-hôte/autre-chemin/infochemin via redirection externe</td>
1454 </tr>
1455
1456 <tr>
1457 <td>^chemin-local(.*) /autre-chemin$1 [P]</td>
1458 <td>n'a pas lieu d'être, non supporté</td>
1459 </tr>
1460
1461 <tr>
1462 <td>^chemin-local(.*) http://cet-hôte/autre-chemin$1</td>
1463 <td>/autre-chemin/infochemin</td>
1464 </tr>
1465
1466 <tr>
1467 <td>^chemin-local(.*) http://cet-hôte/autre-chemin$1 [R]</td>
1468 <td>http://cet-hôte/autre-chemin/infochemin via redirection externe</td>
1469 </tr>
1470
1471 <tr>
1472 <td>^chemin-local(.*) http://cet-hôte/autre-chemin$1 [P]</td>
1473 <td>n'a pas lieu d'être, non supporté</td>
1474 </tr>
1475
1476 <tr>
1477 <td>^chemin-local(.*) http://autre hôte/autre-chemin$1</td>
1478 <td>http://autre hôte/autre-chemin/infochemin via redirection externe</td>
1479 </tr>
1480
1481 <tr>
1482 <td>^chemin-local(.*) http://autre hôte/autre-chemin$1 [R]</td>
1483 <td>http://autre hôte/autre-chemin/infochemin via redirection externe
1484 (le drapeau [R] est redondant)</td>
1485 </tr>
1486
1487 <tr>
1488 <td>^chemin-local(.*) http://autre hôte/autre-chemin$1 [P]</td>
1489 <td>http://autre hôte/autre-chemin/infochemin via un mandataire interne</td>
1490 </tr>
1491
1492 </table>
1493
1494   
1495 </div>
1496 </div>
1497 <div class="bottomlang">
1498 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_rewrite.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
1499 <a href="../fr/mod/mod_rewrite.html" title="Français">&nbsp;fr&nbsp;</a></p>
1500 </div><div id="footer">
1501 <p class="apache">Copyright 2012 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
1502 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>
1503 </body></html>