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