]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_headers.xml.fr
Merge in APR[-util] macros from branches/trunk-buildconf-noapr
[apache] / docs / manual / mod / mod_headers.xml.fr
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision: 1769899 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
7
8 <!--
9  Licensed to the Apache Software Foundation (ASF) under one or more
10  contributor license agreements.  See the NOTICE file distributed with
11  this work for additional information regarding copyright ownership.
12  The ASF licenses this file to You under the Apache License, Version 2.0
13  (the "License"); you may not use this file except in compliance with
14  the License.  You may obtain a copy of the License at
15
16      http://www.apache.org/licenses/LICENSE-2.0
17
18  Unless required by applicable law or agreed to in writing, software
19  distributed under the License is distributed on an "AS IS" BASIS,
20  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21  See the License for the specific language governing permissions and
22  limitations under the License.
23 -->
24
25 <modulesynopsis metafile="mod_headers.xml.meta">
26
27 <name>mod_headers</name>
28 <description>Personnalisation des en-têtes de requêtes et de réponses
29 HTTP</description>
30 <status>Extension</status>
31 <sourcefile>mod_headers.c</sourcefile>
32 <identifier>headers_module</identifier>
33
34 <summary>
35     <p>Ce module fournit des directives permettant de contrôler et
36     modifier les en-têtes de requêtes et de réponses HTTP. Les en-têtes
37     peuvent être fusionnés, remplacés ou supprimés.</p>
38 </summary>
39
40 <section id="order"><title>Chronologie du traitement</title>
41
42     <p>Les directives fournies par <module>mod_headers</module> peuvent
43     s'insérer presque partout dans la configuration du serveur, et on
44     peut limiter leur portée en les plaçant dans des <a
45     href="../sections.html">sections de configuration</a>.</p>
46
47     <p>La chronologie du traitement est importante et est affectée par
48     l'ordre d'apparition des directives dans le fichier de configuration
49     et par leur placement dans les <a
50     href="../sections.html#mergin">sections de configuration</a>. Ainsi,
51     ces deux directives ont un effet différent si leur ordre est inversé
52     :</p>
53
54     <highlight language="config">
55 RequestHeader append MirrorID "mirror 12"
56 RequestHeader unset MirrorID
57     </highlight>
58
59     <p>Dans cet ordre, l'en-tête <code>MirrorID</code> n'est pas défini.
60     Si l'ordre des directives était inversé, l'en-tête
61     <code>MirrorID</code> serait défini à "mirror 12".</p>
62 </section>
63
64 <section id="early"><title>Traitement précoce et traitement
65 tardif</title>
66     <p><module>mod_headers</module> peut agir soir précocement, soit
67     tardivement au niveau de la requête. Le mode normal est le mode
68     tardif, lorsque les en-têtes de <em>requête</em> sont définis, immédiatement
69     avant l'exécution du générateur de contenu, et pour les en-têtes de
70     <em>réponse</em>, juste au moment où la réponse est envoyée sur le réseau.
71     Utilisez toujours le mode tardif sur un serveur en production.</p>
72
73     <p>Le mode précoce a été conçu à des fins d'aide aux tests et au
74     débogage pour les développeurs. Les directives définies en utilisant
75     le mot-clé <code>early</code> sont censées agir au tout début du
76     traitement de la requête. Cela signifie que l'on peut les utiliser
77     pour simuler différentes requêtes et définir des situations de test,
78     tout en gardant à l'esprit que les en-têtes peuvent être modifiés à
79     tout moment par d'autres modules avant que le réponse ne soit
80     générée.</p>
81
82     <p>Comme les directives précoces sont traitées avant que le
83     chemin de la requête ne soit parcouru, les en-têtes
84     précoces ne peuvent être définis que dans un contexte de serveur
85     principal ou de serveur virtuel. Les directives précoces ne peuvent
86     pas dépendre d'un chemin de requête, si bien qu'elles échoueront
87     dans des contextes tels que <directive type="section"
88     module="core">Directory</directive> ou <directive type="section"
89     module="core">Location</directive>.</p>
90 </section>
91
92 <section id="examples"><title>Exemples</title>
93
94     <ol>
95       <li>
96         Copie tous les en-têtes de requête qui commencent par "TS" vers
97         les en-têtes de la réponse :
98
99         <highlight language="config">
100           Header echo ^TS
101         </highlight>
102       </li>
103
104       <li>
105         Ajoute à la réponse un en-tête, <code>mon-en-tête</code>, qui
106         contient un horodatage permettant de déterminer le moment où la
107         requête a été reçue, et le temps qui s'est écoulé jusqu'à ce que
108         la requête ait commencé à être servie. Cet en-tête peut être
109         utilisé par le client pour estimer la charge du serveur ou
110         isoler les goulets d'étranglement entre le client et le
111         serveur.
112
113         <highlight language="config">
114           Header set mon-en-tête "%D %t"
115         </highlight>
116
117         <p>le résultat est l'ajout à la réponse d'un en-tête du type :</p>
118
119         <example>
120           mon-en-tête: D=3775428 t=991424704447256
121         </example>
122       </li>
123
124       <li>
125         Dit Bonjour à Joe
126
127         <example>
128           Header set mon-en-tête "Bonjour Joe. Il a fallu %D microsecondes \<br />
129           à Apache pour servir cette requête."
130         </example>
131
132         <p>le résultat est l'ajout à la réponse d'un en-tête du type :</p>
133
134         <highlight language="config">
135         Header set MyHeader "Bonjour Joe. Il a fallu D=3775428 microsecondes à Apache
136           pour servir cette requête."
137         </highlight>
138       </li>
139
140       <li>
141         Ajoute l'en-tête <code>mon-en-tête</code> à la réponse si et
142         seulement si l'en-tête <code>mon-en-tête-requête</code> est
143         présent dans la requête. Ceci peut s'avérer utile pour générer
144         des en-têtes de réponse "à la tête du client". Notez que cet
145         exemple nécessite les services du module
146         <module>mod_setenvif</module>.
147
148         <highlight language="config">
149 SetEnvIf MyRequestHeader myvalue HAVE_MyRequestHeader
150 Header set MyHeader "%D %t mytext" env=HAVE_MyRequestHeader
151         </highlight>
152
153         <p>Si l'en-tête <code>mon-en-tête-requête: mavaleur</code> est
154         présent dans la requête HTTP, la réponse contiendra un en-tête
155         du type :</p>
156
157         <example>
158           mon-en-tête: D=3775428 t=991424704447256 montexte
159         </example>
160       </li>
161
162       <li>
163         Permet à DAV de fonctionner avec Apache sur SSL (voir la <a
164         href="http://svn.haxx.se/users/archive-2006-03/0549.shtml">description
165         du problème</a>) en remplaçant <var>https:</var> par
166         <var>http:</var> dans l'en-tête <var>Destination</var> :
167
168         <highlight language="config">
169           RequestHeader edit Destination ^https: http: early
170         </highlight>
171       </li>
172
173       <li>
174         Définit la valeur d'un même en-tête sous de multiples conditions
175         non exclusives, mais ne duplique pas une valeur déjà définie
176         dans l'en-tête qui en résulte. Si toutes les conditions
177         suivantes sont satisfaites pour une requête (en d'autres termes,
178         si les trois variables d'environnement <code>CGI</code>,
179         <code>NO_CACHE</code> et <code>NO_STORE</code> existent pour la
180         requête) :
181
182         <highlight language="config">
183 Header merge Cache-Control no-cache env=CGI
184 Header merge Cache-Control no-cache env=NO_CACHE
185 Header merge Cache-Control no-store env=NO_STORE
186         </highlight>
187
188         <p>alors, la réponse contiendra l'en-tête suivant :</p>
189
190         <example>
191           Cache-Control: no-cache, no-store
192         </example>
193
194         <p>Si <code>append</code> avait été utilisé à la place de
195         <code>merge</code>, la réponse aurait contenu l'en-tête suivant
196         :</p>
197
198         <example>
199           Cache-Control: no-cache, no-cache, no-store
200         </example>
201       </li>
202       <li>
203         Définit un cookie de test si et seulement si le client n'envoie
204         pas de cookie
205         <highlight language="config">
206           Header set Set-Cookie testcookie "expr=-z %{req:Cookie}"
207         </highlight>
208       </li>
209       <li>
210         Ajoute un en-tête de mise en cache pour les réponses avec un
211         code d'état HTTP de 200
212         <highlight language="config">
213           Header append Cache-Control s-maxage=600 "expr=%{REQUEST_STATUS} == 200"
214         </highlight>
215       </li>
216
217     </ol>
218 </section>
219
220 <directivesynopsis>
221 <name>RequestHeader</name>
222 <description>Configure les en-têtes d'une requête HTTP</description>
223 <syntax>RequestHeader add|append|edit|edit*|merge|set|setifempty|unset
224 <var>en-tête</var> [[expr=]<var>valeur</var>
225 [<var>remplacement</var>]
226 [early|env=[!]<var>variable</var>|expr=<var>expression</var>]]
227 </syntax>
228 <contextlist><context>server config</context><context>virtual host</context>
229 <context>directory</context><context>.htaccess</context></contextlist>
230 <override>FileInfo</override>
231 <compatibility>SetIfEmpty est disponible depuis la version 2.4.7 du
232 serveur HTTP Apache ; le paramètre expr=valeur a été introduit avec la
233 version 2.4.10</compatibility>
234
235 <usage>
236     <p>Cette directive permet de remplacer, fusionner, modifier ou
237     supprimer des en-têtes de requête HTTP. L'en-tête est modifié juste
238     avant que le gestionnaire de contenu ne s'exécute, ce qui permet la
239     modification des en-têtes entrants. L'action effectuée est
240     déterminée par le premier argument. Ce dernier accepte les valeurs
241     suivantes :</p>
242
243     <dl>
244
245     <dt><code>add</code></dt>
246     <dd>L'en-tête est ajouté au jeu d'en-têtes préexistant, même s'il
247     existe déjà. Ceci peut conduire à la présence de deux (ou plusieurs)
248     en-têtes possèdant le même nom et donc induire des conséquences
249     imprévues ; en général, il est préférable d'utiliser
250     <code>set</code>, <code>append</code> ou <code>merge</code>.</dd>
251
252     <dt><code>append</code></dt>
253     <dd>La valeur d'en-tête est ajoutée à tout en-tête existant de même
254     nom. Lorsqu'une nouvelle valeur est ainsi ajoutée, elle est séparée
255     de celles qui sont déjà présentes par une virgule. Il s'agit de la
256     méthode HTTP standard permettant d'affecter plusieurs valeurs à un
257     en-tête.</dd>
258
259     <dt><code>edit</code></dt>
260     <dt><code>edit*</code></dt>
261     <dd>Si l'en-tête existe, sa valeur est modifiée en fonction d'une
262     <glossary ref="regex">expression rationnelle</glossary> de type
263     recherche/remplacement. L'argument <var>valeur</var> est une
264     <glossary ref="regex">expression rationnelle</glossary>, et
265     l'argument <var>remplacement</var> une chaîne de caractères de
266     remplacement qui peut contenir des références
267     arrières ou des spécificateurs de format. Avec
268     <code>edit</code>, la chaîne de l'en-tête correspondant au modèle ne
269     sera recherchée et remplacée qu'une seule fois, alors qu'avec
270     <code>edit*</code>, elle le sera pour chacune de ses instances si
271     elle apparaît plusieurs fois.</dd>
272
273     <dt><code>merge</code></dt>
274     <dd>La valeur d'en-tête est ajoutée à tout en-tête de même nom, sauf
275     si elle apparaît déjà dans la liste des valeurs préexistantes de
276     l'en-tête séparées par des virgules. Lorsqu'une nouvelle valeur est
277     ainsi ajoutée, elle est séparée de celles qui sont déjà présentes
278     par une virgule. Il s'agit de la méthode HTTP standard permettant
279     d'affecter plusieurs valeurs à un en-tête. Les valeurs sont
280     comparées en tenant compte de la casse, et après le traitement de
281     tous les spécificateurs de format. Une valeur entourée de guillemets
282     est considérée comme différente de la même valeur mais sans
283     guillemets.</dd>
284
285     <dt><code>set</code></dt>
286     <dd>L'en-tête est défini, remplaçant tout en-tête préexistant avec
287     le même nom.</dd>
288
289     <dt><code>setifempty</code></dt>
290     <dd>L'en-tête est défini, mais seulement s'il n'existe
291     aucun en-tête avec le même nom.<br />
292     Disponible depuis la version 2.4.7 du serveur HTTP Apache.</dd>
293
294     <dt><code>unset</code></dt>
295     <dd>L'en-tête est supprimé s'il existe. Si plusieurs en-têtes
296     possèdent le même nom, ils seront tous supprimés. L'argument
297     <var>value</var> ne doit pas apparaître.</dd>
298     </dl>
299
300     <p>Cet argument est suivi d'un nom d'en-tête qui peut se terminer
301     par un caractère ':', mais ce n'est pas obligatoire. La casse est
302     ignorée. Avec <code>set</code>, <code>append</code>,
303     <code>merge</code> et <code>add</code>, une <var>valeur</var> est
304     fournie en troisième argument. Si une <var>valeur</var> contient des
305     espaces, elle doit être entourée de guillemets. Avec
306     <code>unset</code>, aucune <var>valeur</var> ne doit apparaître.
307     <var>valeur</var> peut être une chaîne de caractères, une chaîne
308     contenant des spécificateurs de format, ou une combinaison des deux.
309     Les spécificateurs de format supportés sont les mêmes que ceux de la
310     directive <directive module="mod_headers">Header</directive>, à
311     laquelle vous pouvez vous reporter pour plus de détails. Avec
312     <code>edit</code>, les deux arguments <var>valeur</var> et
313     <var>remplacement</var> sont obligatoires, et correspondent
314     respectivement à une <glossary ref="regex">expression
315     rationnelle</glossary> et à une chaîne de remplacement.</p>
316
317     <p>La directive <directive>RequestHeader</directive> peut être
318     suivie d'un argument supplémentaire, qui pourra prendre les valeurs
319     suivantes :</p>
320     <dl>
321     <dt><code>early</code></dt>
322     <dd>Spécifie <a href="#early">traitement préalable</a>.</dd>
323     <dt><code>env=[!]<var>variable</var></code></dt>
324     <dd>La directive est appliquée si et seulement si la <a
325     href="../env.html">variable d'environnement</a>
326     <code>variable</code> existe. Un <code>!</code> devant
327     <code>variable</code> inverse le test, et la directive ne
328     s'appliquera alors que si <code>variable</code> n'est pas définie.</dd>
329     <dt><code>expr=<var>expression</var></code></dt>
330     <dd>La directive s'applique si et seulement si <var>expression</var>
331     est évaluée à true. Vous trouverez plus de détails à propos de la
332     syntaxe et de l'évaluation des expressions dans la documentation <a
333     href="../expr.html">ap_expr</a>.</dd>
334     </dl>
335
336     <p>Excepté le cas du mode <a href="#early">précoce</a>, la directive
337     <directive>RequestHeader</directive> est traitée juste avant la
338     prise en compte de la requête par son gestionnaire, au cours de la
339     phase de vérification. Ceci permet la modification des en-têtes
340     générés par le navigateur, ou par les filtres en entrée
341     d'Apache.</p>
342 </usage>
343 </directivesynopsis>
344
345 <directivesynopsis>
346 <name>Header</name>
347 <description>Configure les en-têtes d'une réponse HTTP</description>
348 <syntax>Header [<var>condition</var>] add|append|echo|edit|edit*|merge|set|setifempty|unset|note
349 <var>en-tête</var> [[expr=]<var>valeur</var>
350 [<var>remplacement</var>]
351 [early|env=[!]<var>variable</var>|expr=<var>expression</var>]]
352 </syntax>
353 <contextlist><context>server config</context><context>virtual host</context>
354 <context>directory</context><context>.htaccess</context></contextlist>
355 <override>FileInfo</override>
356 <compatibility>SetIfEmpty est disponible depuis la version 2.4.7 du
357 serveur HTTP Apache ; le paramètre expr=valeur a été introduit avec la
358 version 2.4.10</compatibility>
359
360 <usage>
361     <p>Cette directive permet de remplacer, fusionner, ou
362     supprimer des en-têtes de réponse HTTP. L'en-tête est modifié juste
363     après que le gestionnaire de contenu et les filtres en sortie ne
364     s'exécutent, ce qui permet la modification des en-têtes
365     sortants.</p>
366
367     <p>L'argument optionnel <var>condition</var> permet de déterminer
368     sur quelle table interne d'en-têtes de réponses cette directive va
369     opérer. En dépit du nom, la valeur par défaut de
370     <code>onsuccess</code> ne limite <em>pas</em> une <var>action</var>
371     aux réponses avec un code d'état de 2xx. Les en-têtes définis sous
372     cette condition sont encore utilisés quand par exemple une requête
373     est mandatée ou générée par un programme CGI avec <em>succès</em>,
374     et ceci même dans le cas où ils ont généré un code d'échec.</p>
375
376     <p>Lorsque votre action est une fonction agissant sur un en-tête
377     existant, vous pourrez être amené à spécifier une condition
378     <code>always</code>, en fonction de la table interne dans laquelle
379     l'en-tête original a été défini. La table qui correspond à
380     <code>always</code> est utilisée pour les réponses d'erreur générées
381     localement ainsi que pour les réponses qui ont abouti.
382      Notez aussi que la répétition
383     de cette directive avec les deux conditions peut être pertinente
384     dans certains scénarios, car <code>always</code> n'englobe pas
385     <code>onsuccess</code> en ce qui concerne les en-têtes existants :</p>
386
387     <ul>
388        <li>Vous ajoutez un en-tête à une réponse
389        générée localement et échouée (non-2xx),
390        une redirection par exemple, et dans ce cas, seule la table
391        correspondant à <code>always</code> est utilisée dans la réponse
392        définitive.</li>
393        <li>Vous modifiez ou supprimez un en-tête généré par un script
394        CGI, et dans ce cas, les scripts CGI sont dans la table
395        correspondant à <code>always</code> et non dans la table par
396        défaut.</li>
397        <li>Vous modifiez ou supprimez un en-tête généré par tel ou tel
398        composant du serveur, mais cet en-tête n'est pas trouvé par la
399        condition par défaut <code>onsuccess</code>.</li>
400     </ul>
401
402     <p>Outre le paramètre <var>condition</var> décrit ci-dessus, vous
403     pouvez limiter une action en fonction de codes d'état HTTP, par
404     exemple pour les requêtes mandatées ou générées par un programme
405     CGI. Voir l'exemple qui utilise %{REQUEST_STATUS} dans la section
406     ci-dessus.</p>
407
408     <p>L'action que cette directive provoque est déterminée par le
409     premier argument (ou par le second argument si une
410     <var>condition</var> est spécifiée). Il peut prendre
411     une des valeurs suivantes :</p>
412
413     <dl>
414     <dt><code>add</code></dt>
415     <dd>L'en-tête est ajouté au jeu d'en-têtes préexistant, même s'il
416     existe déjà. Ceci peut conduire à la présence de deux (ou plusieurs)
417     en-têtes possèdant le même nom et donc induire des conséquences
418     imprévues ; en général, il est préférable d'utiliser
419     <code>set</code>, <code>append</code> ou <code>merge</code>.</dd>
420
421     <dt><code>append</code></dt>
422     <dd>La valeur d'en-tête est ajoutée à tout en-tête existant de même
423     nom. Lorsqu'une nouvelle valeur est ainsi ajoutée, elle est séparée
424     de celles qui sont déjà présentes par une virgule. Il s'agit de la
425     méthode HTTP standard permettant d'affecter plusieurs valeurs à un
426     en-tête.</dd>
427
428     <dt><code>echo</code></dt>
429     <dd>Les en-têtes de la requête possédant le nom spécifié sont
430     recopiés vers les en-têtes de la réponse. <var>en-tête</var> peut
431     être une <glossary ref="regex">expression rationnelle</glossary>, et
432     <var>valeur</var> ne doit pas être présent.</dd>
433
434     <dt><code>edit</code></dt>
435     <dt><code>edit*</code></dt>
436     <dd>Si l'en-tête existe, sa valeur est modifiée en fonction d'une
437     <glossary ref="regex">expression rationnelle</glossary> de type
438     recherche/remplacement. L'argument <var>valeur</var> est une
439     <glossary ref="regex">expression rationnelle</glossary>, et
440     l'argument <var>remplacement</var> une chaîne de caractères de
441     remplacement qui peut contenir des références
442     arrières ou des spécificateurs de format. La forme <code>edit</code> n'effectuera une
443     recherche/remplacement qu'une seule fois dans la valeur de
444     l'en-tête, alors que la forme <code>edit*</code> en effectuera autant
445     que le nombre d'apparition de la chaîne à remplacer.</dd>
446
447     <dt><code>merge</code></dt>
448     <dd>La valeur d'en-tête est ajoutée à tout en-tête de même nom, sauf
449     si elle apparaît déjà dans la liste des valeurs préexistantes de
450     l'en-tête séparées par des virgules. Lorsqu'une nouvelle valeur est
451     ainsi ajoutée, elle est séparée de celles qui sont déjà présentes
452     par une virgule. Il s'agit de la méthode HTTP standard permettant
453     d'affecter plusieurs valeurs à un en-tête. Les valeurs sont
454     comparées en tenant compte de la casse, et après le traitement de
455     tous les spécificateurs de format. Une valeur entourée de guillemets
456     est considérée comme différente de la même valeur mais sans
457     guillemets.</dd>
458
459     <dt><code>set</code></dt>
460     <dd>L'en-tête est défini, remplaçant tout en-tête préexistant avec
461     le même nom. L'argument <var>valeur</var> peut être une chaîne de
462     formatage.</dd>
463
464     <dt><code>setifempty</code></dt>
465     <dd>L'en-tête est défini, mais seulement s'il n'existe
466     aucun en-tête avec le même nom.
467     <note>
468     L'en-tête Content-Type est un cas particulier car il est possible que sa
469     valeur ait été déterminée mais que l'en-tête ne soit pas présent dans la
470     réponse lorsque <code>setifempty</code> est évalué. Dans ce cas, il est
471     préférable d'utiliser <code>set</code> comme dans l'exemple suivant :
472     <highlight language="config">
473     Header set Content-Type "text/plain" "expr=-z %{CONTENT_TYPE}"
474     </highlight>
475     </note></dd>
476
477     <dt><code>unset</code></dt>
478     <dd>L'en-tête est supprimé s'il existe. Si plusieurs en-têtes
479     possèdent le même nom, ils seront tous supprimés. L'argument
480     <var>value</var> ne doit pas apparaître.</dd>
481
482     <dt><code>note</code></dt>
483     <dd>La valeur de l'<var>en-tête</var> considéré est copiée dans une
484     note interne dont le nom est spécifié via l'argument
485     <var>valeur</var>. Ceci permet de journaliser la valeur d'un en-tête
486     envoyé par un programme CGI ou une ressource mandatée, même s'il
487     est prévu de l'effacer.<br />
488     Disponible à partir de la version 2.4.7 du serveur HTTP Apache.</dd>
489
490     </dl>    
491
492     <p>Cet argument est suivi d'un nom d'<var>en-tête</var> qui peut se
493     terminer par un caractère ':', mais ce n'est pas obligatoire. La
494     casse est ignorée avec <code>set</code>, <code>append</code>,
495     <code>merge</code>, <code>add</code>, <code>unset</code> et
496     <code>edit</code>. Le nom d'<var>en-tête</var> est sensible à la
497     casse pour <code>echo</code> et peut être une <glossary
498     ref="regex">expression rationnelle</glossary>.</p>
499
500     <p>Avec <code>set</code>, <code>append</code>, <code>merge</code> et
501     <code>add</code>, une <var>valeur</var> est spécifiée comme
502     argument suivant. Si <var>valeur</var> contient des espaces, elle
503     doit être entourée de guillemets. <var>valeur</var> peut être une
504     chaîne de caractères, une chaîne contenant des spécificateurs de
505     format propres à <module>mod_headers</module> (et des caractères
506     littéraux), ou une expression  <a href="../expr.html">ap_expr</a>
507     préfixée par <em>expr=</em>.</p>
508     
509     <p><var>valeur</var> supporte les spécificateurs de format suivants :</p>
510
511     <table border="1" style="zebra">
512     <columnspec><column width=".25"/><column width=".75"/></columnspec>
513     <tr><th>Format</th><th>Description</th></tr>
514     <tr><td><code>%%</code></td>
515         <td>Le caractère pourcentage</td></tr>
516
517     <tr><td><code>%t</code></td>
518         <td>Le moment de réception de la requête en temps
519         universel coordonné depuis le temps epoch (Jan. 1, 1970) et
520         exprimé en microsecondes. La valeur est précédée de
521         <code>t=</code>.</td></tr>
522
523     <tr><td><code>%D</code></td>
524         <td>Le temps écoulé entre la réception de la requête et l'envoi
525         des en-têtes sur le réseau. Il s'agit de la durée de traitement
526         de la requête. La valeur est précédée de <code>D=</code>. La
527         valeur est exprimée en microsecondes.</td></tr>
528
529     <tr><td><code>%l</code></td>
530         <td>La charge moyenne courante du serveur proprement dit. Ce
531         sont les valeurs obtenues par <code>getloadavg()</code> qui
532         représentent la charge moyenne courante, sur 5 minutes et sur 15
533         minutes. Chaque valeur est précédée de <code>l=</code> et
534         séparée de la suivante par un <code>/</code>.<br />
535         Disponible depuis la version 2.4.4 du serveur HTTP Apache.
536         </td></tr>
537
538     <tr><td><code>%i</code></td>
539         <td>Le pourcentage courant de httpd au repos (de 0 à 100)
540         en se basant sur le nombre de processus et threads disponibles.
541         La valeur est précédée de <code>i=</code>.<br />
542         Disponible depuis la version 2.4.4 du serveur HTTP Apache.
543         </td></tr>
544
545     <tr><td><code>%b</code></td>
546         <td>Le pourcentage courant de httpd utilisé (de 0 à 100)
547         en se basant sur le nombre de processus et threads disponibles.
548         La valeur est précédée de <code>b=</code>.<br />
549         Disponible depuis la version 2.4.4 du serveur HTTP Apache.
550         </td></tr>
551
552     <tr><td><code>%{NOM_VARIABLE}e</code></td>
553         <td>Le contenu de la <a href="../env.html">variable
554         d'environnement</a> <code>NOM_VARIABLE</code>.</td></tr>
555
556     <tr><td><code>%{NOM_VARIABLE}s</code></td>
557         <td>Le contenu de la <a href="../env.html">variable
558         d'environnement SSL</a> <code>NOM_VARIABLE</code>, si
559         <module>mod_ssl</module> est activé.</td></tr>
560
561     </table>
562
563     <note><title>Note</title>
564       <p>Le spécificateur de format <code>%s</code> est disponible
565       depuis la version 2.1 d'Apache ; il peut être utilisé à la place
566       de <code>%e</code> pour éviter de devoir spécifier
567       <code>SSLOptions +StdEnvVars</code>. Cependant, si
568       <code>SSLOptions +StdEnvVars</code> doit tout de même être
569       spécifié pour une raison quelconque, <code>%e</code> sera plus
570       efficace que <code>%s</code>.</p>
571     </note>
572
573     <note><title>Note à propos des valeurs des expressions</title>
574     <p>Lorsque le paramètre valeur utilise l'interpréteur <a
575     href="../expr.html">ap_expr</a>, certaines syntaxes d'expressions
576     seront différentes des exemples qui évaluent des expressions
577     <em>booléennes</em> telles que &lt;If&gt; :</p>
578     <ul>
579       <li>Le point de départ de la syntaxe est 'string' au lieu de
580       'expr'.</li>
581       <li>Les appels de fonction utilisent la syntaxe %{funcname:arg} au
582       lieu de funcname(arg).</li>
583       <li>Les fonctions multi-arguments ne sont pas encore disponibles
584       depuis le point de départ 'string'.</li>
585       <li>Il faut mettre entre guillemets l'ensemble du paramètre, comme
586       dans l'exemple suivant : 
587           <highlight language="config">
588         Header set foo-checksum "expr=%{md5:foo}"
589           </highlight>
590        </li>
591                    
592     </ul>
593     </note>
594
595     <p><code>edit</code>nécessite les deux arguments
596     <var>valeur</var>, qui est une <glossary ref="regex">expression
597     rationnelle</glossary>, et une chaîne additionnelle
598     <var>remplacement</var>. Depuis la version 2.4.7, la chaîne de
599     remplacement peut aussi
600     contenir des spécificateurs de format.</p>
601
602     <p>La directive <directive>Header</directive> peut être suivie d'un
603     argument additionnel qui peut prendre les valeurs suivantes :</p>
604
605     <dl>
606     <dt><code>early</code></dt>
607     <dd>Spécifie <a href="#early">traitement préalable</a>.</dd>
608     <dt><code>env=[!]<var>variable</var></code></dt>
609     <dd>La directive est appliquée si et seulement si la <a
610     href="../env.html">variable d'environnement</a>
611     <code>variable</code> existe. Un <code>!</code> devant
612     <code>variable</code> inverse le test, et la directive ne
613     s'appliquera alors que si <code>variable</code> n'est pas définie.</dd>
614     <dt><code>expr=<var>expression</var></code></dt>
615     <dd>La directive s'applique si et seulement si <var>expression</var>
616     est évaluée à true. Vous trouverez plus de détails à propos de la
617     syntaxe et de l'évaluation des expressions dans la documentation <a
618     href="../expr.html">ap_expr</a>.
619     <highlight language="config">
620          # Cet exemple retarde l'évaluation de la clause de condition par
621          # rapport à &lt;If&gt;
622          Header always set CustomHeader my-value "expr=%{REQUEST_URI} =~ m#^/special_path.php$#"
623     </highlight>
624     </dd>
625     </dl>
626
627     <p>Excepté le cas du mode <a href="#early">précoce</a>, les
628     directives <directive>Header</directive> sont traitées juste avant
629     l'envoi de la réponse sur le réseau. Cela signifie qu'il est
630     possible de définir et/ou modifier la plupart des en-têtes, à
631     l'exception de certains en-têtes qui sont ajoutés par le filtre
632     d'en-tête HTTP. Avant la version 2.2.12, il n'était pas
633     possible de modifier l'en-tête Content-Type avec cette directive.</p>
634 </usage>
635 </directivesynopsis>
636
637 </modulesynopsis>
638