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