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