]> granicus.if.org Git - apache/blob - docs/manual/rewrite/flags.xml.fr
update transformation
[apache] / docs / manual / rewrite / flags.xml.fr
1 <?xml version="1.0" encoding="ISO-8859-1" ?>
2 <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision: 1721957:1734260 (outdated) -->
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 <manualpage metafile="flags.xml.meta">
26 <parentdocument href="./">Rewrite</parentdocument>
27
28   <title>Les drapeaux de r&eacute;&eacute;criture</title>
29
30 <summary>
31 <p>Ce document d&eacute;crit les drapeaux disponibles dans la directive
32 <directive module="mod_rewrite">RewriteRule</directive>, en fournissant
33 des explications d&eacute;taill&eacute;es et des exemples.</p>
34 </summary>
35
36 <seealso><a href="../mod/mod_rewrite.html">Documentation du module</a></seealso>
37 <seealso><a href="intro.html">Introduction &agrave; mod_rewrite</a></seealso>
38 <seealso><a href="remapping.html">Redirection and remise en
39 correspondance</a></seealso>
40 <seealso><a href="access.html">Contr&ocirc;le d'acc&egrave;s</a></seealso>
41 <seealso><a href="vhosts.html">Serveurs virtuels</a></seealso>
42 <seealso><a href="proxy.html">Mise en cache</a></seealso>
43 <seealso><a href="rewritemap.html">Utilisation de RewriteMap</a></seealso>
44 <seealso><a href="advanced.html">Techniques avanc&eacute;es</a></seealso>
45 <seealso><a href="avoid.html">Quand ne pas utiliser mod_rewrite</a></seealso>
46
47 <section id="introduction"><title>Introduction</title>
48 <p>Le comportement d'une directive <directive
49 module="mod_rewrite">RewriteRule</directive> peut &ecirc;tre modifi&eacute; par un ou
50 plusieurs drapeaux. Les drapeaux sont situ&eacute;s en fin de r&egrave;gle, entour&eacute;s
51 de crochets, et s&eacute;par&eacute;s le cas &eacute;ch&eacute;ant par des virgules.</p>
52 <highlight language="config">RewriteRule pattern target [Flag1,Flag2,Flag3]</highlight>
53
54 <p>Chaque drapeau (&agrave; quelques exceptions pr&egrave;s)
55 poss&egrave;de une forme courte, comme <code>CO</code>, ainsi qu'une forme longue,
56 comme <code>cookie</code>. Bien que
57 la forme courte soit la plus couramment utilis&eacute;e, nous vous recommandons
58 de vous familiariser avec les drapeaux sous leur forme longue, afin de
59 bien m&eacute;moriser ce que chaque drapeau est suppos&eacute; faire.
60 Certains drapeaux acceptent un ou plusieurs arguments. Les drapeaux ne
61 sont pas sensibles &agrave; la casse.</p>
62
63 <p>Les drapeaux qui modifient les m&eacute;tadonn&eacute;es associ&eacute;es &agrave; la requ&ecirc;te
64 (T=, H=, E=) n'ont aucun effet dans un contexte de r&eacute;pertoire ou de
65 fichier htaccess, lorsqu'une substitution (autre que '-') est effectu&eacute;e
66 au cours de la m&ecirc;me passe du processus de r&eacute;&eacute;criture.
67 </p>
68
69 <p>Chaque drapeau disponible est pr&eacute;sent&eacute; ici, avec un exemple
70 d'utilisation.</p>
71 </section>
72
73 <section id="flag_b"><title>B (&eacute;chappement dans les r&eacute;f&eacute;rences arri&egrave;res)</title>
74 <p>Avec le drapeau [B], la directive <directive
75 module="mod_rewrite">RewriteRule</directive> &eacute;chappe les caract&egrave;res
76 non-alphanum&eacute;riques avant d'appliquer la transformation. A partir
77 de la version 2.4.10, vous pouvez limiter l'&eacute;chappement dans les
78 r&eacute;f&eacute;rences arri&egrave;res &agrave; une liste de caract&egrave;res que vous pouvez sp&eacute;cifiez comme
79 dans cet exemple : <code>[B=#?;]</code>. Notez que l'espace peut faire
80 partie de la liste des caract&egrave;res &agrave; &eacute;chapper, mais qu'il ne doit pas
81 &ecirc;tre le dernier caract&egrave;re de cette liste.
82 </p>
83
84 <p><code>mod_rewrite</code> doit supprimer les s&eacute;quences d'&eacute;chappement
85 des URLs avant leur
86 mise en correspondance avec le syst&egrave;me de fichiers ; les s&eacute;quences
87 d'&eacute;chappement sont donc supprim&eacute;es des r&eacute;f&eacute;rences arri&egrave;res au moment o&ugrave;
88 ces derni&egrave;res sont appliqu&eacute;es. Avec le drapeau B, les caract&egrave;res
89 non-alphanum&eacute;riques des r&eacute;f&eacute;rences arri&egrave;res seront &eacute;chapp&eacute;s. Consid&eacute;rons
90 par exemple cette r&egrave;gle :</p>
91
92 <highlight language="config">RewriteRule "^search/(.*)$" "/search.php?term=$1"</highlight>
93
94 <p>Soit le terme de recherche 'x &amp; y/z' ; un navigateur va le coder
95 en 'x%20%26%20y%2Fz', transformant la requ&ecirc;te en
96 'search/x%20%26%20y%2Fz'. Sans le drapeau B, cette r&egrave;gle de r&eacute;&eacute;criture
97 va r&eacute;&eacute;crire la requ&ecirc;te en 'search.php?term=x &amp; y/z', ce qui ne
98 correspond pas &agrave; une URL valide et cette derni&egrave;re sera encod&eacute;e en
99 <code>search.php?term=x%20&amp;y%2Fz=</code>, ce qui ne correspond pas &agrave;
100 ce que l'on souhaitait.</p>
101
102 <p>Avec le drapeau B, les param&egrave;tres sont r&eacute;encod&eacute;s avant d'&ecirc;tre pass&eacute;s
103 &agrave; l'URL r&eacute;sultante, ce qui fournit une r&eacute;&eacute;criture correcte en
104 <code>/search.php?term=x%20%26%20y%2Fz</code>.</p>
105
106 <p>Notez que vous devrez peut-&ecirc;tre aussi d&eacute;finir la
107 directive <directive module="core">AllowEncodedSlashes</directive>
108 &agrave; <code>On</code> pour
109 que cet exemple particulier fonctionne, car httpd ne permet pas les
110 slashes encod&eacute;s dans les URLs, et renvoie une erreur 404 s'il en
111 rencontre un.</p>
112
113 <p>Ce processus d'&eacute;chappement est en particulier n&eacute;cessaire dans le
114 contexte d'un mandataire, o&ugrave; l'acc&egrave;s au serveur d'arri&egrave;re-plan &eacute;chouera
115 si on pr&eacute;sente &agrave; ce dernier une URL non &eacute;chapp&eacute;e.</p>
116
117 <p>Une alternative &agrave; ce drapeau consiste &agrave; utiliser une directive
118 <directive module="mod_rewrite">RewriteCond</directive> pour capturer
119 %{THE_REQUEST}, les cha&icirc;nes captur&eacute;es se pr&eacute;sentant
120 alors sous la forme cod&eacute;e.</p>
121
122 </section>
123
124 <section id="flag_bnp"><title>BNP|backrefnoplus (ne pas &eacute;chapper
125 l'espace en +)</title>
126 <p>Si le drapeau [BNP] est sp&eacute;cifi&eacute;, la directive <directive
127 module="mod_rewrite">RewriteRule</directive> &eacute;chappera le caract&egrave;re
128 espace en %20 au lieu de '+' dans les r&eacute;f&eacute;rences arri&egrave;res. Ceci s'av&egrave;re
129 utile lorsque la r&eacute;f&eacute;rence arri&egrave;re est utilis&eacute;e dans la partie chemin,
130 et non dans les param&egrave;tres de la requ&ecirc;te.</p>
131 </section>
132
133 <section id="flag_c"><title>C|chain</title>
134 <p>Le drapeau [C] ou [chain] indique que la r&egrave;gle <directive
135 module="mod_rewrite">RewriteRule</directive> est cha&icirc;n&eacute;e avec la
136 suivante. Autrement dit, si la r&egrave;gle s'applique, elle est trait&eacute;e
137 normalement et passe le contr&ocirc;le &agrave; la r&egrave;gle suivante. Par contre, si
138 elle ne s'applique pas, la r&egrave;gle suivante, ainsi que toutes les r&egrave;gles
139 cha&icirc;n&eacute;es qui suivent, seront saut&eacute;es.</p>
140
141 </section>
142
143 <section id="flag_co"><title>CO|cookie</title>
144 <p>Le drapeau [CO], ou [cookie], vous permet de d&eacute;finir un cookie
145 lorsqu'une r&egrave;gle <directive module="mod_rewrite">RewriteRule</directive>
146 s'applique. Il poss&egrave;de trois arguments obligatoires et
147 quatre arguments optionnels.</p>
148
149 <p>La syntaxe compl&egrave;te de ce drapeau, avec tous ses attributs, est la
150 suivante :</p>
151
152 <example>
153 [CO=NAME:VALUE:DOMAIN:lifetime:path:secure:httponly]
154 </example>
155
156 <p>Si un caract&egrave;re litt&eacute;ral ':' doit &ecirc;tre ins&eacute;rer dans un des champs du
157 cookie, une autre syntaxe est disponible. Pour utiliser cette syntaxe
158 alternative, le contenu du champ "Name" doit &ecirc;tre pr&eacute;c&eacute;d&eacute; du caract&egrave;re
159 ';', et les s&eacute;pateurs de champs deviendront des ';'.</p>
160
161 <example>
162 [CO=;NAME;VALUE:MOREVALUE;DOMAIN;lifetime;path;secure;httponly]
163 </example>
164
165 <p>Vous devez d&eacute;clarer un nom, une valeur et un domaine pour que
166 le cookie puisse &ecirc;tre d&eacute;fini.</p>
167
168
169 <dl>
170 <dt>Domain</dt>
171 <dd>Le domaine pour lequel vous souhaitez que le cookie soit valide. Ce
172 peut &ecirc;tre un nom de serveur, comme <code>www.example.com</code>, ou un
173 domaine, comme <code>.example.com</code>. Il doit comporter au moins
174 deux parties s&eacute;par&eacute;es par un point. C'est &agrave; dire que vous ne pouvez pas
175 utiliser les valeurs <code>.com</code> ou <code>.net</code>. En effet,
176 ce style de cookie est interdit par le mod&egrave;le de s&eacute;curit&eacute; des cookies.</dd>
177 </dl>
178
179 <p>Vous pouvez aussi d&eacute;finir les valeurs suivantes :</p>
180
181 <dl>
182 <dt>Lifetime</dt>
183 <dd>La dur&eacute;e de vie du cookie, en minutes.</dd>
184 <dd>Une valeur de 0 indique une dur&eacute;e de vie correspondant &agrave; la session
185 courante du navigateur. Il s'agit de la valeur par d&eacute;faut.</dd>
186
187 <dt>Path</dt>
188 <dd>Le chemin, sur le site web concern&eacute;, pour lequel le cookie est
189 valide, du style <code>/clients/</code> or
190 <code>/fichiers/telechargement/</code>.</dd>
191 <dd>La valeur par d&eacute;faut est <code>/</code> - c'est &agrave; dire l'ensemble du
192 site web.</dd>
193
194 <dt>Secure</dt>
195 <dd>Si cet argument a pour valeur <code>secure</code>,
196 <code>true</code>, ou <code>1</code>, le cookie ne pourra &ecirc;tre transmis
197 que dans le cadre d'une connexion s&eacute;curis&eacute;e (https).</dd>
198
199 <dt>httponly</dt>
200 <dd>Si cet argument a pour valeur <code>HttpOnly</code>,
201 <code>true</code>, ou <code>1</code>, le cookie aura son drapeau
202 <code>HttpOnly</code> activ&eacute;, ce qui signifie qu'il sera inaccessible au
203 code JavaScript pour les navigateurs qui supportent cette
204 fonctionnalit&eacute;.</dd>
205 </dl>
206
207 <p>Voici un exemple :</p>
208
209 <highlight language="config">
210 RewriteEngine On
211 RewriteRule "^/index\.html" "-" [CO=frontdoor:yes:.example.org:1440:/]
212 </highlight>
213
214 <p>Dans l'exemple ci-dessus, la r&egrave;gle ne r&eacute;&eacute;crit
215 pas la requ&ecirc;te. La cible de r&eacute;&eacute;criture "-"
216 indique &agrave; mod_rewrite de transmettre la requ&ecirc;te sans
217 modification. Par contre, il
218 d&eacute;finit un cookie nomm&eacute; 'frontdoor' avec une valeur 'yes'. Le cookie est
219 valide pour tout h&ocirc;te situ&eacute; dans le domaine <code>.example.org</code>. Sa
220 dur&eacute;e de vie est limit&eacute;e &agrave; 1440 minutes (24 heures), et il sera renvoy&eacute;
221 pour tous les URIs.</p>
222
223 </section>
224
225 <section id="flag_dpi"><title>DPI|discardpath</title>
226 <p>Avec le drapeau DPI, la partie PATH_INFO de l'URI
227 r&eacute;&eacute;crit est supprim&eacute;e.</p>
228 <p>Ce drapeau est disponible dans les versions 2.2.12 et sup&eacute;rieures.</p>
229 <p>Dans un contexte de r&eacute;pertoire, l'URI mis en comparaison par chaque
230 r&egrave;gle <directive>RewriteRule</directive> est la concat&eacute;nation des
231 valeurs courantes de l'URI et de PATH_INFO.</p>
232
233 <p>L'URI courant peut &ecirc;tre l'URI initial tel qu'il a &eacute;t&eacute; fourni par le
234 client, le r&eacute;sultat d'une passe pr&eacute;c&eacute;dente du processus de r&eacute;&eacute;criture,
235 ou le r&eacute;sultat de la r&egrave;gle pr&eacute;c&eacute;dente dans le processus courant de
236 r&eacute;&eacute;criture.</p>
237
238 <p>Par contre, la partie PATH_INFO ajout&eacute;e &agrave; l'URI avant chaque r&egrave;gle ne
239 refl&egrave;te que la valeur de PATH_INFO avant la passe courante du processus
240 de r&eacute;&eacute;criture. En cons&eacute;quence, si de larges portions de l'URI
241 correspondent et sont traduites via plusieurs directives
242 <directive>RewriteRule</directive>, sans prendre en compte
243 quelles parties de l'URI provenaient du PATH_INFO courant, l'URI final
244 pourra se voir ajouter plusieurs copies de PATH_INFO.</p>
245
246 <p>Utilisez ce drapeau pour toute substitution o&ugrave; la pr&eacute;sence du PATH_INFO qui
247 r&eacute;sultait de la mise en correspondance pr&eacute;c&eacute;dente de cette requ&ecirc;te avec
248 le syst&egrave;me de fichier n'est pas n&eacute;cessaire. Avec ce drapeau, le
249 PATH_INFO &eacute;tabli avant que cette passe du processus de r&eacute;&eacute;criture ne
250 d&eacute;bute est oubli&eacute;. PATH_INFO ne sera pas recalcul&eacute; tant que la passe
251 courante du processus de r&eacute;&eacute;criture ne sera pas achev&eacute;e. Les r&egrave;gles
252 suivantes de cette passe ne verront que le r&eacute;sultat direct des
253 substitutions, sans aucun PATH_INFO ajout&eacute;.</p>
254 </section>
255
256 <section id="flag_e"><title>E|env</title>
257 <p>Avec le drapeau [E], ou [env], vous pouvez d&eacute;finir la valeur d'une
258 variable d'environnement. Notez que certaines variables d'environnement
259 peuvent &ecirc;tre d&eacute;finies apr&egrave;s le traitement de la r&egrave;gle, annulant par
260 la-m&ecirc;me ce que vous avez d&eacute;fini. Voir le <a href="../env.html">document
261 sur les variables d'environnement</a> pour plus de d&eacute;tails sur le
262 fonctionnement des variables d'environnement.</p>
263
264 <p>La syntaxe compl&egrave;te pour ce drapeau est :</p>
265
266 <highlight language="config">
267 [E=!VAR]
268 </highlight>
269
270 <p><code>VAL</code> peut comporter des r&eacute;f&eacute;rences arri&egrave;res
271 (<code>$N</code> ou <code>%N</code>) qui seront d&eacute;velopp&eacute;es.</p>
272
273 <p>En utilisant la version courte</p>
274
275 <example>
276 [E=VAR]
277 </example>
278
279 <p>vous pouvez d&eacute;finir la variable d'environnement nomm&eacute;e
280 <code>VAR</code> avec une valeur vide.</p>
281
282 <p>La forme</p>
283
284 <example>
285 [E=!VAR]
286 </example>
287
288 <p>permet d'annuler la d&eacute;finition de la variable <code>VAR</code>.</p>
289
290 <p>Les variables d'environnement s'emploient dans diff&eacute;rents contextes,
291 comme les programmes CGI, d'autres directives RewriteRule, ou des
292 directives CustomLog.</p>
293
294 <p>L'exemple suivant d&eacute;finit une variable d'environnement nomm&eacute;e 'image'
295 avec une valeur de '1' si l'URI de la requ&ecirc;te correspond &agrave; un fichier
296 image. Cette variable d'environnement est ensuite utilis&eacute;e pour exclure
297 une telle requ&ecirc;te du journal des acc&egrave;s.</p>
298
299 <highlight language="config">
300 RewriteRule "\.(png|gif|jpg)" "-" [E=image:1]<br />
301 CustomLog "logs/access_log" combined env=!image
302 </highlight>
303
304 <p>Notez que le m&ecirc;me effet peut &ecirc;tre obtenu &agrave; l'aide de la directive
305 <directive module="mod_setenvif">SetEnvIf</directive>. Cette technique
306 est pr&eacute;sent&eacute;e &agrave; titre d'exemple et non de recommandation.</p>
307 </section>
308
309 <section id="flag_end"><title>END</title>
310 <p>L'utilisation du drapeau [END] permet non seulement de terminer le
311 processus de r&eacute;&eacute;criture en cours (comme [L]), mais aussi d'emp&ecirc;cher tout
312 processus de r&eacute;&eacute;criture ult&eacute;rieur dans un contexte de r&eacute;pertoire
313 (htaccess).</p>
314
315 <p>Ceci ne s'applique pas aux nouvelles requ&ecirc;tes r&eacute;sultant d'une
316 redirection externe.</p>
317 </section>
318
319 <section id="flag_f"><title>F|forbidden</title>
320 <p>L'utilisation du drapeau [F] permet de faire envoyer par le serveur au
321 client un code de statut "403 Forbidden". Le m&ecirc;me effet peut &ecirc;tre obtenu &agrave;
322 l'aide de la directive <directive module="mod_access_compat">Deny</directive>,
323 mais ce drapeau offre plus de souplesse dans l'attribution d'un statut
324 Forbidden.</p>
325
326 <p>La r&egrave;gle suivante va interdire la t&eacute;l&eacute;chargement de fichiers
327 <code>.exe</code> depuis votre serveur.</p>
328
329 <highlight language="config">RewriteRule "\.exe" "-" [F]</highlight>
330
331 <p>Cet exemple utilise la syntaxe "-" pour la cible de r&eacute;&eacute;criture, ce
332 qui signifie que l'URI de la requ&ecirc;te n'est pas modifi&eacute;. Il n'y a aucune
333 raison de r&eacute;&eacute;crire un URI, si vous avez l'intention d'interdire la
334 requ&ecirc;te.</p>
335
336 <p>Lorsqu'on utilise [F], [L] est implicite - c'est &agrave; dire que la
337 r&eacute;ponse est renvoy&eacute;e imm&eacute;diatement, et aucune autre r&egrave;gle n'est &eacute;valu&eacute;e.</p>
338
339 </section>
340
341 <section id="flag_g"><title>G|gone</title>
342 <p>Le drapeau [G] permet de faire envoyer par le serveur un code de statut
343 "410 Gone" avec la r&eacute;ponse. Ce code indique qu'une ressource qui &eacute;tait
344 disponible auparavant ne l'est plus actuellement.</p>
345
346 <p>Comme dans le cas du drapeau [F], on utilise en g&eacute;n&eacute;ral la syntaxe
347 "-" pour la cible de r&eacute;&eacute;criture lorsqu'on utilise le drapeau [G] :</p>
348
349 <highlight language="config">RewriteRule "oldproduct" "-" [G,NC]</highlight>
350
351 <p>Lorsqu'on utilise [G], [L] est implicite - c'est &agrave; dire que la
352 r&eacute;ponse est renvoy&eacute;e imm&eacute;diatement, et aucune autre r&egrave;gle n'est &eacute;valu&eacute;e.</p>
353
354 </section>
355
356 <section id="flag_h"><title>H|handler</title>
357 <p>Force le traitement de la requ&ecirc;te r&eacute;sultante par le gestionnaire
358 sp&eacute;cifi&eacute;. Par exemple, on peut utiliser ce drapeau pour forcer
359 l'interpr&eacute;tation de tous les fichiers sans extension par le gestionnaire
360 php :</p>
361
362 <highlight language="config">RewriteRule "!\." "-" [H=application/x-httpd-php]</highlight>
363
364 <p>
365 L'expression rationnelle ci-dessus - <code>!\.</code> - correspond &agrave;
366 toute requ&ecirc;te qui ne contient pas le caract&egrave;re <code>.</code>.
367 </p>
368 <p>On peut aussi utiliser ce drapeau pour forcer l'utilisation d'un
369 certain gestionnaire en fonction de certaines conditions. Par exemple,
370 l'extrait suivant utilis&eacute; dans un contexte de niveau serveur permet de
371 faire en sorte que les fichiers <code>.php</code> soient
372 <em>affich&eacute;s</em> par <code>mod_php</code> dans le cas o&ugrave; ils font
373 l'objet d'une requ&ecirc;te avec l'extension <code>.phps</code> :</p>
374
375 <highlight language="config">
376 RewriteRule "^(/source/.+\.php)s$" "$1" [H=application/x-httpd-php-source]
377 </highlight>
378
379
380 <p>L'expression rationnelle ci-dessus -
381 <code>^(/source/.+\.php)s$</code> - va correspondre &agrave; toute requ&ecirc;te qui
382 d&eacute;butera par <code>/source/</code>, continuera par 1 ou n caract&egrave;res
383 puis par <code>.phps</code>. La r&eacute;f&eacute;rence arri&egrave;re $1 fait r&eacute;f&eacute;rence &agrave; la
384 correspondance captur&eacute;e entre parenth&egrave;ses de l'expression
385 rationnelle.</p>
386
387
388 </section>
389
390 <section id="flag_l"><title>L|last</title>
391 <p>Lorsque le drapeau [L] est pr&eacute;sent, <module>mod_rewrite</module>
392 arr&ecirc;te le traitement du jeu de r&egrave;gles. Cela signifie dans la plupart des
393 situations que si la r&egrave;gle s'applique, aucune autre r&egrave;gle ne sera
394 trait&eacute;e. Ce drapeau correspond &agrave; la commande Perl <code>last</code>, ou
395 &agrave; la commande <code>break</code> en C. Utilisez ce drapeau pour indiquer
396 que la r&egrave;gle courante doit &ecirc;tre appliqu&eacute;e imm&eacute;diatement, sans tenir
397 compte des r&egrave;gles ult&eacute;rieures.</p>
398
399 <p>Si vous utilisez des r&egrave;gles <directive
400 module="mod_rewrite">RewriteRule</directive> dans des fichiers
401 <code>.htaccess</code> ou des sections <directive type="section"
402 module="core">Directory</directive>, il est important d'avoir quelques
403 notions sur la mani&egrave;re dont les r&egrave;gles sont trait&eacute;es. Pour simplifier,
404 une fois les r&egrave;gles trait&eacute;es, la requ&ecirc;te r&eacute;&eacute;crite est pass&eacute;e &agrave; nouveau
405 au moteur d'interpr&eacute;tation des URLs afin que ce dernier puisse la
406 traiter. Il est possible qu'au cours du traitement de la requ&ecirc;te
407 r&eacute;&eacute;crite, le fichier <code>.htaccess</code> ou la section <directive
408 type="section" module="core">Directory</directive> soient &agrave; nouveau
409 rencontr&eacute;s, entra&icirc;nant un nouveau traitement du jeu de r&egrave;gles depuis le
410 d&eacute;but. Cette situation se pr&eacute;sente le plus souvent lorsqu'une des r&egrave;gles
411 provoque une redirection - interne ou externe - ce qui r&eacute;initialise le
412 traitement de la requ&ecirc;te.</p>
413
414 <p>Si vous utilisez des directives <directive
415 module="mod_rewrite">RewriteRule</directive> dans un de ces contextes,
416 il importe par cons&eacute;quent de pr&eacute;voir explicitement des &eacute;tapes permettant
417 d'&eacute;viter un bouclage infini sur les r&egrave;gles,
418 et de ne pas compter seulement sur
419 le drapeau [L] pour terminer l'ex&eacute;cution d'une s&eacute;rie de r&egrave;gles, comme
420 d&eacute;crit ci-dessous.</p>
421
422 <p>Un autre drapeau, [END], permet non seulement d'interrompre le cycle
423 courant du processus de r&eacute;&eacute;criture, mais aussi d'emp&ecirc;cher toute
424 r&eacute;&eacute;criture ult&eacute;rieure dans le contexte de r&eacute;pertoire (htaccess). Ceci ne
425 s'applique pas aux nouvelles requ&ecirc;tes r&eacute;sultant de redirections
426 externes.</p>
427
428 <p>Dans l'exemple donn&eacute; ici, toute requ&ecirc;te est r&eacute;&eacute;crite en
429 <code>index.php</code>, la requ&ecirc;te originale &eacute;tant ajout&eacute;e comme cha&icirc;ne
430 de requ&ecirc;te en argument &agrave; <code>index.php</code> ; cependant, la
431 directive <directive
432 module="mod_rewrite">RewriteCond</directive> permet de s'assurer que si
433 la requ&ecirc;te concerne d&eacute;j&agrave; <code>index.php</code>, la directive <directive
434 module="mod_rewrite">RewriteRule</directive> sera saut&eacute;e.</p>
435
436 <highlight language="config">
437 RewriteBase "/"
438 RewriteCond "%{REQUEST_URI}" !=/index.php
439 RewriteRule "^(.*)" "/index.php?req=$1" [L,PT]
440 </highlight>
441 </section>
442
443 <section id="flag_n"><title>N|next</title>
444 <p>Le drapeau [N] provoque un red&eacute;marrage du traitement des r&egrave;gles
445 depuis le d&eacute;but, en utilisant le r&eacute;sultat du jeu de r&egrave;gles, sous
446 r&eacute;serve qu'il existe un point de d&eacute;marrage ; &agrave; utiliser avec pr&eacute;cautions
447 car il peut provoquer un bouclage infini.
448 </p>
449 <p>
450 Le drapeau [Next] peut servir, par exemple,
451 &agrave; remplacer de mani&egrave;re r&eacute;p&eacute;titive
452 une cha&icirc;ne de caract&egrave;re ou une lettre dans une requ&ecirc;te. Dans l'exemple
453 suivant, chaque occurence de A sera remplac&eacute;e par B dans la requ&ecirc;te, et
454 ceci jusqu'il n'y ait plus de A &agrave; remplacer.
455 </p>
456
457 <highlight language="config">RewriteRule "(.*)A(.*)" "$1B$2" [N]</highlight>
458
459 <p>Vous pouvez vous repr&eacute;senter ce traitement comme une boucle
460 <code>while</code> : tant que le mod&egrave;le de la r&egrave;gle correspond (c'est &agrave;
461 dire, tant que l'URI contient un <code>A</code>),
462 effectuer la substitution (c'est &agrave; dire, remplacer le <code>A</code> par
463 un <code>B</code>).</p>
464
465 <p>A partir de la version 2.5.0, ce module renvoie une erreur apr&egrave;s
466 10000 it&eacute;rations afin d'&eacute;viter les boucles infinies. Ce nombre maximum
467 d'it&eacute;ration peut &ecirc;tre modifi&eacute; via le drapeau N.</p>
468 <highlight language="config">
469 # On veut remplacer 1 caract&egrave;re &agrave; chaque it&eacute;ration de la boucle
470 RewriteRule "(.+)[&gt;&lt;;]$" "$1" [N=32000]
471 # ... ou s'arr&ecirc;ter apr&egrave;s 10 it&eacute;rations
472 RewriteRule "(.+)[&gt;&lt;;]$" "$1" [N=10]
473 </highlight>
474
475 </section>
476
477 <section id="flag_nc"><title>NC|nocase</title>
478 <p>Avec le drapeau [NC], le mod&egrave;le de la r&egrave;gle <directive
479 module="mod_rewrite">RewriteRule</directive> est compar&eacute; &agrave; la requ&ecirc;te de
480 mani&egrave;re insensible &agrave; la casse. C'est &agrave; dire que cette comparaison
481 s'effectue sans tenir compte des majuscules/minuscules dans l'URI
482 compar&eacute;.</p>
483
484 <p>Dans l'exemple suivant, toute requ&ecirc;te pour un fichier image sera
485 transmise par Apache &agrave; votre serveur d'images d&eacute;di&eacute;. La correspondance est
486 insensible &agrave; la casse, si bien que par exemple, <code>.jpg</code> aussi
487 bien que <code>.JPG</code> seront accept&eacute;s.</p>
488
489 <highlight language="config">RewriteRule "(.*\.(jpg|gif|png))$" "http://images.example.com$1" [P,NC]</highlight>
490 </section>
491
492 <section id="flag_ne"><title>NE|noescape</title>
493 <p>Par d&eacute;faut, les caract&egrave;res sp&eacute;ciaux, comme <code>&amp;</code> et
494 <code>?</code>, sont convertis en leur &eacute;quivalent
495 hexad&eacute;cimal. Le drapeau [NE] permet d'&eacute;viter cette conversion.
496 </p>
497
498 <highlight language="config">RewriteRule "^/anchor/(.+)" "/bigpage.html#$1" [NE,R]</highlight>
499
500 <p>
501 Dans l'exemple ci-dessus, <code>/anchor/xyz</code> est r&eacute;&eacute;crit en
502 <code>/bigpage.html#xyz</code>. En l'absence du drapeau [NE], le #
503 aurait &eacute;t&eacute; converti en son &eacute;quivalent hexad&eacute;cimal, <code>%23</code>, ce
504 qui aurait provoqu&eacute; un code d'erreur "404 Not Found".
505 </p>
506
507 </section>
508
509 <section id="flag_ns"><title>NS|nosubreq</title>
510 <p>Le drapeau [NS] emp&ecirc;che la r&egrave;gle de s'appliquer aux sous-requ&ecirc;tes.
511 Par exemple, une page incluse au moyen d'une SSI (Server
512 Side Include) est une sous-requ&ecirc;te, et vous ne voudrez probablement pas que
513 la r&eacute;&eacute;criture s'applique &agrave; ces sous-requ&ecirc;tes. Ainsi, lorsque
514 <module>mod_dir</module> recherche des informations &agrave; propos des
515 fichiers par d&eacute;faut du r&eacute;pertoire (comme les fichiers
516 <code>index.html</code>), il s'agit d'une sous-requ&ecirc;te interne, et vous
517 ne d&eacute;sirez en g&eacute;n&eacute;ral pas que ces sous-requ&ecirc;tes soient r&eacute;&eacute;crites. Cette
518 r&eacute;&eacute;criture
519 n'est pas toujours utile pour les sous-requ&ecirc;tes, et peut m&ecirc;me causer des
520 erreurs si l'ensemble du jeu de r&egrave;gles est appliqu&eacute;. L'utilisation de
521 ce drapeau permet d'exclure les r&egrave;gles qui peuvent poser probl&egrave;me.</p>
522
523 <p>Comment d&eacute;terminer si vous devez utiliser cette r&egrave;gle ou non : si
524 vous pr&eacute;fixez les URLs avec des scripts CGI, afin de forcer leur
525 traitement par le script CGI, vous vous exposez &agrave; des probl&egrave;mes (ou du
526 moins &agrave; une surcharge significative) avec les sous-requ&ecirc;tes. Dans ces
527 cas, vous devez utiliser ce drapeau.</p>
528
529 <p>
530 Les images, scripts java, ou fichiers css, charg&eacute;s en tant que partie
531 d'une page html, ne sont pas des sous-requ&ecirc;tes - le navigateur les
532 appelle sous forme de requ&ecirc;tes HTTP &agrave; part enti&egrave;re.
533 </p>
534 </section>
535
536 <section id="flag_p"><title>P|proxy</title>
537 <p>L'utilisation du drapeau [P] entra&icirc;ne le traitement de la requ&ecirc;te par
538 le module <module>mod_proxy</module>, et ceci via une requ&ecirc;te de
539 mandataire. Par exemple, si vous voulez que toutes les requ&ecirc;tes d'images
540 soient trait&eacute;es par un serveur d'images annexe, vous pouvez utiliser
541 une r&egrave;gle de ce style :</p>
542
543 <highlight language="config">RewriteRule "/(.*)\.(jpg|gif|png)$" "http://images.example.com/$1.$2" [P]</highlight>
544
545 <p>L'utilisation du drapeau [P] provoque aussi l'effet du drapeau [L] -
546 autrement dit, la requ&ecirc;te est imm&eacute;diatement envoy&eacute;e au mandataire, et
547 toute r&egrave;gle ult&eacute;rieure sera ignor&eacute;e.</p>
548
549 <p>
550 Vous devez vous assurer que la cha&icirc;ne de substitution soit un URI valide
551 (commen&ccedil;ant typiquement par <code>http://</code><em>nom-serveur</em>)
552 qui puisse &ecirc;tre trait&eacute;e par le module <module>mod_proxy</module>. Dans
553 le cas contraire, le module mandataire vous renverra une erreur.
554 L'utilisation de ce drapeau impl&eacute;mente de mani&egrave;re plus puissante la
555 directive <directive module="mod_proxy">ProxyPass</directive>, pour
556 faire correspondre le contenu distant &agrave; l'espace de nommage du serveur
557 local.</p>
558
559 <note type="warning">
560       <title>Avertissement &agrave; propos de la s&eacute;curit&eacute;</title>
561       <p>Lors de la construction de l'URL cible de la r&egrave;gle, il convient
562       de prendre en compte l'impact en mati&egrave;re de s&eacute;curit&eacute; qu'aura le
563       fait de permettre au client d'influencer le jeu d'URLs pour
564       lesquelles votre serveur agira en tant que mandataire.
565       Assurez-vous que la partie protocole://nom-serveur de l'URL soit
566       fixe, ou ne permette pas au client de l'influencer induement.</p>
567 </note>
568
569 <note type="warning">
570       <title>Avertissement au sujet des performances</title>
571       <p>Utiliser ce drapeau fait intervenir <module>mod_proxy</module> sans la gestion des connexions
572       persistantes, ce qui signifie que vous obtiendrez des performances meilleurs si vous utilisez
573       <directive module="mod_proxy">ProxyPass</directive> ou <directive module="mod_proxy">ProxyPassMatch</directive>.</p>
574       <p>Ceci est du au fait que ce drapeau induit l'utilisation du worker par d&eacute;faut, qui
575       ne g&egrave;re pas la mise en commun des connexions.</p>
576       <p>Partout o&ugrave; cela est possible, pr&eacute;f&eacute;rez l'utilisation de ces directives.</p>
577 </note>
578
579 <p>Note: <module>mod_proxy</module> doit &ecirc;tre activ&eacute; pour pouvoir
580 utiliser ce drapeau.</p>
581
582 </section>
583
584 <section id="flag_pt"><title>PT|passthrough</title>
585
586 <p>
587 Par d&eacute;faut, la cible (ou cha&icirc;ne de substitution) d'une r&egrave;gle
588 RewriteRule est sens&eacute;e &ecirc;tre un chemin de fichier. Avec le drapeau [PT],
589 par contre, elle est trait&eacute;e comme un URI. Autrement dit, avec le
590 drapeau [PT], le r&eacute;sultat de la r&egrave;gle  <directive
591 module="mod_rewrite">RewriteRule</directive> est pass&eacute; &agrave; nouveau au
592 syst&egrave;me de mise en correspondance des URLs avec le syst&egrave;me de fichiers,
593 de fa&ccedil;on &agrave; ce que les syst&egrave;mes de mise en correspondance bas&eacute;s sur les
594 chemins de fichiers, comme la directive <directive
595 module="mod_alias">Alias</directive>, <directive
596 module="mod_alias">Redirect</directive>, ou <directive
597 module="mod_alias">ScriptAlias</directive>, par exemple, puissent avoir une
598 chance d'accomplir leur t&acirc;che.
599 </p>
600
601 <p>
602 Si par exemple, vous avez un <directive
603 module="mod_alias">Alias</directive> pour /icons, et une r&egrave;gle  <directive
604 module="mod_rewrite">RewriteRule</directive> qui renvoie vers /icons,
605 vous devez utiliser le drapeau [PT] pour &ecirc;tre s&ucirc;r que l'<directive
606 module="mod_alias">Alias</directive> sera bien &eacute;valu&eacute;.
607 </p>
608
609 <highlight language="config">
610 Alias "/icons" "/usr/local/apache/icons"
611 RewriteRule "/pics/(.+)\.jpg$" "/icons/$1.gif" [PT]
612 </highlight>
613
614 <p>
615 Dans l'exemple pr&eacute;c&eacute;dent, en l'absence du drapeau [PT], l'Alias aurait
616 &eacute;t&eacute; ignor&eacute;, ce qui aurait provoqu&eacute; une erreur 'File not found'.
617 </p>
618
619 <p>Avec le drapeau <code>PT</code>, le drapeau <code>L</code> est
620 implicite : la r&eacute;&eacute;criture s'arr&ecirc;tera afin de transmettre la requ&ecirc;te &agrave; la
621 phase suivante du traitement.</p>
622
623 <p>Notez que le drapeau <code>PT</code> est implicite dans des contextes
624 de r&eacute;pertoire comme les sections <directive type="section"
625 module="core">Directory</directive> ou les fichiers
626 <code>.htaccess</code>. Le seul moyen de contourner ceci consiste &agrave;
627 r&eacute;&eacute;crire vers <code>-</code>.</p>
628
629 </section>
630
631 <section id="flag_qsa"><title>QSA|qsappend</title>
632 <p>
633 Quand l'URI de remplacement contient une cha&icirc;ne de requ&ecirc;te, le
634 comportement par d&eacute;faut de la r&egrave;gle <directive
635 module="mod_rewrite">RewriteRule</directive> est de supprimer la <code>
636 query string</code> (il s'agit des param&egrave;tres &eacute;ventuellement pass&eacute;s dans l'URL apr&egrave;s le
637 caract&egrave;re <code>?</code>, usuellement pour les formulaires trait&eacute;s par la
638 m&eacute;thode HTTP <code>GET</code>) existante, et de la remplacer par celle nouvellement cr&eacute;&eacute;e.
639 Avec le drapeau [QSA], les cha&icirc;nes de requ&ecirc;te peuvent &ecirc;tre combin&eacute;es.
640 </p>
641
642 <p>Consid&eacute;rons la r&egrave;gle suivante :</p>
643
644 <highlight language="config">RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]</highlight>
645
646 <p>Avec le drapeau [QSA], une requ&ecirc;te pour
647 <code>/pages/123?one=two</code> sera r&eacute;&eacute;crite en
648 <code>/page.php?page=123&amp;one=two</code>. Sans le drapeau [QSA], la
649 m&ecirc;me requ&ecirc;te sera r&eacute;&eacute;crite en <code>/page.php?page=123</code> -
650 autrement dit, la cha&icirc;ne de requ&ecirc;te (<code>query string</code>) existante sera supprim&eacute;e.
651 </p>
652 </section>
653
654 <section id="flag_qsd"><title>QSD|qsdiscard</title>
655 <p>
656 Lorsque l'URI de la requ&ecirc;te contient une cha&icirc;ne de param&egrave;tres, et si
657 l'URI cible n'en contient pas, le comportement par d&eacute;faut de la
658 directive <directive module="mod_rewrite">RewriteRule</directive> consiste &agrave; copier cette
659 cha&icirc;ne de param&egrave;tres dans l'URI cible. Avec le drapeau [QSD], la cha&icirc;ne
660 de param&egrave;tres est supprim&eacute;e.
661 </p>
662
663 <p>Ce drapeau est disponible dans les versions 2.4.0 et sup&eacute;rieures.</p>
664
665 <p>
666 Lorsque les drapeaux [QSD] et [QSA] sont utilis&eacute;s ensemble, c'est le
667 drapeau [QSD] qui l'emporte.
668 </p>
669
670 <p>
671 Si l'URI cible poss&egrave;de une cha&icirc;ne de param&egrave;tres, le comportement par
672 d&eacute;faut sera respect&eacute; - c'est &agrave; dire que la cha&icirc;ne de param&egrave;tres
673 originale sera supprim&eacute;e et remplac&eacute;e par la cha&icirc;ne de param&egrave;tres de
674 l'URI cible.
675 </p>
676
677 </section>
678
679
680 <section id="flag_r"><title>R|redirect</title>
681 <p>
682 L'utilisation du drapeau [R] provoque l'envoi d'une redirection au
683 navigateur. Si une URL pleinement qualifi&eacute;e (FQDN - fully qualified domain name)
684  est sp&eacute;cifi&eacute;e (c'est &agrave; dire incluant <code>http://nom-du-serveur/</code>),
685  une redirection sera effectu&eacute;e vers cette adresse. Dans le cas contraire,
686  le protocole courant, le nom du serveur et le num&eacute;ro de port seront
687  utilis&eacute;s pour g&eacute;n&eacute;rer l'URL envoy&eacute;e avec la redirection.
688 </p>
689
690 <p><em>Tout</em> code de statut de r&eacute;ponse HTTP valide peut &ecirc;tre
691 sp&eacute;cifi&eacute;, en utilisant la syntaxe [R=305], le code de statut 302 &eacute;tant
692 utilis&eacute; par d&eacute;faut si aucun code n'est sp&eacute;cifi&eacute;. Le code de statut
693 sp&eacute;cifi&eacute; n'est pas n&eacute;cessairement un code de statut
694 de redirection (3xx). Cependant, si le code de statut est en dehors de la plage des codes de
695 redirection (300-399), la cha&icirc;ne de substitution est enti&egrave;rement
696 supprim&eacute;e, et la r&eacute;&eacute;criture s'arr&ecirc;te comme si le drapeau <code>L</code>
697 &eacute;tait utilis&eacute;.</p>
698
699 <p>En plus des codes de statut de r&eacute;ponse, vous pouvez sp&eacute;cifier les
700 codes de redirection en utilisant leurs noms symboliques :
701 <code>temp</code> (d&eacute;faut), <code>permanent</code>, ou
702 <code>seeother</code>.</p>
703
704 <p>
705 Vous utiliserez presque toujours [R] en conjonction avec [L] (c'est &agrave;
706 dire [R,L]), car employ&eacute; seul, le drapeau [R] pr&eacute;fixe l'URI avec
707 <code>http://cet-h&ocirc;te[:ce-port]</code>, mais passe ensuite cette adresse
708 &agrave; la r&egrave;gle suivante, ce qui provoquera le plus souvent des
709 avertissements 'Invalid URI in request'.
710 </p>
711
712 </section>
713
714 <section id="flag_s"><title>S|skip</title>
715 <p>Le drapeau [S] sert &agrave; sauter des r&egrave;gles que vous ne voulez pas voir
716 ex&eacute;cuter. La syntaxe du drapeau [S] est [S=<em>N</em>], o&ugrave;
717 <em>N</em> correspond au nombre de r&egrave;gles &agrave; sauter (sous
718 r&eacute;serve que la r&egrave;gle <directive
719 module="mod_rewrite">RewriteRule</directive> corresponde et qu'au moins
720 une condition <directive module="mod_rewrite">RewriteCond</directive>
721 pr&eacute;alable soit v&eacute;rifi&eacute;e). 
722 Ceci peut s'interpr&eacute;ter comme une instruction
723 <code>goto</code>  dans votre jeu de r&egrave;gles de r&eacute;&eacute;criture. Dans
724 l'exemple suivant, nous ne voulons ex&eacute;cuter la r&egrave;gle <directive
725 module="mod_rewrite">RewriteRule</directive> que si l'URI demand&eacute; ne
726 correspond pas &agrave; un fichier existant.</p>
727 <highlight language="config">
728 # La requ&ecirc;te concerne-t-elle un fichier qui n'existe pas ?
729 RewriteCond "%{REQUEST_FILENAME}" !-f
730 RewriteCond "%{REQUEST_FILENAME}" !-d
731 # Si c'est la cas, on saute les deux r&egrave;gles de r&eacute;&eacute;criture suivantes
732 RewriteRule ".?" "-" [S=2]
733
734 RewriteRule "(.*\.gif)" "images.php?$1"
735 RewriteRule "(.*\.html)" "docs.php?$1"
736 </highlight>
737
738
739
740 <p>Cette technique trouve son utilit&eacute; dans le fait qu'une directive
741 <directive module="mod_rewrite">RewriteCond</directive> ne s'applique
742 qu'&agrave; la r&egrave;gle qui la suit imm&eacute;diatement. Ainsi, si vous voulez
743 qu'une directive <code>RewriteCond</code> s'applique &agrave; plusieurs r&egrave;gles
744 <code>RewriteRule</code>, une technique possible consiste &agrave; inverser ces
745 conditions et ajouter une <code>RewriteRule</code> avec le drapeau [Skip]. Cette technique permet
746 d'&eacute;laborer des pseudo-constructions if-then-else : la derni&egrave;re r&egrave;gle du
747 bloc then contiendra <code>skip=N</code>, o&ugrave; N est le nombre de r&egrave;gles
748 contenues dans le bloc else :</p>
749 <highlight language="config">
750 # Est-ce que le fichier existe ?
751 RewriteCond "%{REQUEST_FILENAME}" !-f
752 RewriteCond "%{REQUEST_FILENAME}" !-d
753 # Create an if-then-else construct by skipping 3 lines if we meant to go to the &quot;else&quot; stanza.
754 RewriteRule ".?" "-" [S=3]
755
756 # Si le fichier existe, alors :
757 RewriteRule "(.*\.gif)" "images.php?$1"
758     RewriteRule "(.*\.html)" "docs.php?$1"
759     # Skip past the &quot;else&quot; stanza.
760     RewriteRule ".?" "-" [S=1]
761 # ELSE...
762 RewriteRule "(.*)" "404.php?file=$1"
763 # END
764 </highlight>
765
766 <p>Il est probablement plus ais&eacute; de d&eacute;finir ce genre de configuration
767 via les directives <directive type="section">If</directive>, <directive
768 type="section">ElseIf</directive>, et <directive
769 type="section">Else</directive>.</p>
770
771 </section>
772
773 <section id="flag_t"><title>T|type</title>
774 <p>D&eacute;finit le type MIME de la r&eacute;ponse r&eacute;sultante renvoy&eacute;e. L'effet est
775 identique &agrave; celui de la directive <directive
776 module="mod_mime">AddType</directive>.</p>
777
778 <p>Par exemple, vous pouvez utiliser la technique suivante pour servir
779 du code source Perl en tant que plein texte, s'il est requis d'une
780 certaine mani&egrave;re :</p>
781
782 <highlight language="config">
783 # Sert les fichier .pl en tant que plein texte
784 RewriteRule "\.pl$" "-" [T=text/plain]
785 </highlight>
786
787 <p>Ou encore, si vous poss&eacute;dez une cam&eacute;ra qui produit des fichiers
788 images jpeg sans extension, vous pouvez forcer le renvoi de ces images
789 avec le type MIME correct en se basant sur le nom du fichier :</p>
790
791 <highlight language="config">
792 # Les fichiers dont le nom contient 'IMG' sont des images jpg.
793 RewriteRule "IMG" "-" [T=image/jpg]
794 </highlight>
795
796 <p>Notez cependant qu'il s'agit d'un exemple trivial, et que le probl&egrave;me
797 aurait pu &ecirc;tre r&eacute;solu en utilisant &agrave; la place la directive <directive
798 type="section" module="core">FilesMatch</directive>. Il faut toujours
799 envisager la possibilit&eacute; d'une solution alternative &agrave; un probl&egrave;me avant
800 d'avoir recours &agrave; la r&eacute;&eacute;criture, qui sera toujours moins efficace qu'une
801 solution alternative.</p>
802
803 <p>
804 Dans un contexte de niveau r&eacute;pertoire, n'utilisez que <code>-</code>
805 (tiret) comme substitution, <em>dans toute la s&eacute;quence de r&eacute;&eacute;criture de
806 mod_rewrite</em>, sinon le type MIME d&eacute;fini avec ce drapeau
807 sera perdu suite &agrave; un retraitement interne (y compris les s&eacute;quences de
808 r&eacute;&eacute;criture suivantes de mod_rewrite). Dans ce contexte, vous pouvez
809 utiliser le drapeau <code>L</code> pour terminer la s&eacute;quence
810 <em>courante</em> de r&eacute;&eacute;criture de mod_rewrite.</p>
811
812 </section>
813
814 </manualpage>
815