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