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