]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_headers.xml.fr
Fixes to XML. rebuild.
[apache] / docs / manual / mod / mod_headers.xml.fr
1 <?xml version="1.0"?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision : 1331006 -->
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&ecirc;tes de requ&ecirc;tes et de r&eacute;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&ocirc;ler et
36     modifier les en-t&ecirc;tes de requ&ecirc;tes et de r&eacute;ponses HTTP. Les en-t&ecirc;tes
37     peuvent &ecirc;tre fusionn&eacute;s, remplac&eacute;s ou supprim&eacute;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&eacute;rer presque partout dans la configuration du serveur, et on
44     peut limiter leur port&eacute;e en les pla&ccedil;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&eacute;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&eacute;rent si leur ordre est invers&eacute;
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&ecirc;te <code>MirrorID</code> n'est pas d&eacute;fini.
60     Si l'ordre des directives &eacute;tait invers&eacute;, l'en-t&ecirc;te
61     <code>MirrorID</code> serait d&eacute;fini &agrave; "mirror 12".</p>
62 </section>
63
64 <section id="early"><title>Traitement pr&eacute;coce et traitement
65 tardif</title>
66     <p><module>mod_headers</module> peut agir soir pr&eacute;cocement, soit
67     tardivement au niveau de la requ&ecirc;te. Le mode normal est le mode
68     tardif, lorsque les en-t&ecirc;tes de <em>requ&ecirc;te</em> sont d&eacute;finis, imm&eacute;diatement
69     avant l'ex&eacute;cution du g&eacute;n&eacute;rateur de contenu, et pour les en-t&ecirc;tes de
70     <em>r&eacute;ponse</em>, juste au moment o&ugrave; la r&eacute;ponse est envoy&eacute;e sur le r&eacute;seau.
71     Utilisez toujours le mode tardif sur un serveur en production.</p>
72
73     <p>Le mode pr&eacute;coce a &eacute;t&eacute; con&ccedil;u &agrave; des fins d'aide aux tests et au
74     d&eacute;bogage pour les d&eacute;veloppeurs. Les directives d&eacute;finies en utilisant
75     le mot-cl&eacute; <code>early</code> sont cens&eacute;es agir au tout d&eacute;but du
76     traitement de la requ&ecirc;te. Cela signifie que l'on peut les utiliser
77     pour simuler diff&eacute;rentes requ&ecirc;tes et d&eacute;finir des situations de test,
78     tout en gardant &agrave; l'esprit que les en-t&ecirc;tes peuvent &ecirc;tre modifi&eacute;s &agrave;
79     tout moment par d'autres modules avant que le r&eacute;ponse ne soit
80     g&eacute;n&eacute;r&eacute;e.</p>
81
82     <p>Comme les directives pr&eacute;coces sont trait&eacute;es avant que le
83     chemin de la requ&ecirc;te ne soit parcouru, les en-t&ecirc;tes
84     pr&eacute;coces ne peuvent &ecirc;tre d&eacute;finis que dans un contexte de serveur
85     principal ou de serveur virtuel. Les directives pr&eacute;coces ne peuvent
86     pas d&eacute;pendre d'un chemin de requ&ecirc;te, si bien qu'elles &eacute;choueront
87     dans des contextes tels que <code>&lt;Directory&gt;</code> ou
88     <code>&lt;Location&gt;</code>.</p>
89 </section>
90
91 <section id="examples"><title>Exemples</title>
92
93     <ol>
94       <li>
95         Copie tous les en-t&ecirc;tes de requ&ecirc;te qui commencent par "TS" vers
96         les en-t&ecirc;tes de la r&eacute;ponse :
97
98         <highlight language="config">
99           Header echo ^TS
100         </highlight>
101       </li>
102
103       <li>
104         Ajoute &agrave; la r&eacute;ponse un en-t&ecirc;te, <code>mon-en-t&ecirc;te</code>, qui
105         contient un horodatage permettant de d&eacute;terminer le moment o&ugrave; la
106         requ&ecirc;te a &eacute;t&eacute; re&ccedil;ue, et le temps qui s'est &eacute;coul&eacute; jusqu'&agrave; ce que
107         la requ&ecirc;te ait commenc&eacute; &agrave; &ecirc;tre servie. Cet en-t&ecirc;te peut &ecirc;tre
108         utilis&eacute; par le client pour estimer la charge du serveur ou
109         isoler les goulets d'&eacute;tranglement entre le client et le
110         serveur.
111
112         <highlight language="config">
113           Header set mon-en-t&ecirc;te "%D %t"
114         </highlight>
115
116         <p>le r&eacute;sultat est l'ajout &agrave; la r&eacute;ponse d'un en-t&ecirc;te du type :</p>
117
118         <example>
119           mon-en-t&ecirc;te: D=3775428 t=991424704447256
120         </example>
121       </li>
122
123       <li>
124         Dit Bonjour &agrave; Joe
125
126         <example>
127           Header set mon-en-t&ecirc;te "Bonjour Joe. Il a fallu %D microsecondes \<br />
128           &agrave; Apache pour servir cette requ&ecirc;te."
129         </example>
130
131         <p>le r&eacute;sultat est l'ajout &agrave; la r&eacute;ponse d'un en-t&ecirc;te du type :</p>
132
133         <highlight language="config">
134         Header set MyHeader "Bonjour Joe. Il a fallu D=3775428 microsecondes &agrave; Apache
135           pour servir cette requ&ecirc;te."
136         </highlight>
137       </li>
138
139       <li>
140         Ajoute l'en-t&ecirc;te <code>mon-en-t&ecirc;te</code> &agrave; la r&eacute;ponse si et
141         seulement si l'en-t&ecirc;te <code>mon-en-t&ecirc;te-requ&ecirc;te</code> est
142         pr&eacute;sent dans la requ&ecirc;te. Ceci peut s'av&eacute;rer utile pour g&eacute;n&eacute;rer
143         des en-t&ecirc;tes de r&eacute;ponse "&agrave; la t&ecirc;te du client". Notez que cet
144         exemple n&eacute;cessite les services du module
145         <module>mod_setenvif</module>.
146
147         <highlight language="config">
148 SetEnvIf MyRequestHeader myvalue HAVE_MyRequestHeader
149 Header set MyHeader "%D %t mytext" env=HAVE_MyRequestHeader
150         </highlight>
151
152         <p>Si l'en-t&ecirc;te <code>mon-en-t&ecirc;te-requ&ecirc;te: mavaleur</code> est
153         pr&eacute;sent dans la requ&ecirc;te HTTP, la r&eacute;ponse contiendra un en-t&ecirc;te
154         du type :</p>
155
156         <example>
157           mon-en-t&ecirc;te: D=3775428 t=991424704447256 montexte
158         </example>
159       </li>
160
161       <li>
162         Permet &agrave; DAV de fonctionner avec Apache sur SSL (voir la <a
163         href="http://svn.haxx.se/users/archive-2006-03/0549.shtml">description
164         du probl&egrave;me</a>) en rempla&ccedil;ant <var>https:</var> par
165         <var>http:</var> dans l'en-t&ecirc;te <var>Destination</var> :
166
167         <highlight language="config">
168           RequestHeader edit Destination ^https: http: early
169         </highlight>
170       </li>
171
172       <li>
173         D&eacute;finit la valeur d'un m&ecirc;me en-t&ecirc;te sous de multiples conditions
174         non exclusives, mais ne duplique pas une valeur d&eacute;j&agrave; d&eacute;finie
175         dans l'en-t&ecirc;te qui en r&eacute;sulte. Si toutes les conditions
176         suivantes sont satisfaites pour une requ&ecirc;te (en d'autres termes,
177         si les trois variables d'environnement <code>CGI</code>,
178         <code>NO_CACHE</code> et <code>NO_STORE</code> existent pour la
179         requ&ecirc;te) :
180
181         <highlight language="config">
182 Header merge Cache-Control no-cache env=CGI
183 Header merge Cache-Control no-cache env=NO_CACHE
184 Header merge Cache-Control no-store env=NO_STORE
185         </highlight>
186
187         <p>alors, la r&eacute;ponse contiendra l'en-t&ecirc;te suivant :</p>
188
189         <example>
190           Cache-Control: no-cache, no-store
191         </example>
192
193         <p>Si <code>append</code> avait &eacute;t&eacute; utilis&eacute; &agrave; la place de
194         <code>merge</code>, la r&eacute;ponse aurait contenu l'en-t&ecirc;te suivant
195         :</p>
196
197         <example>
198           Cache-Control: no-cache, no-cache, no-store
199         </example>
200       </li>
201       <li>
202         D&eacute;finit un cookie de test si et seulement si le client n'envoie
203         pas de cookie
204         <highlight language="config">
205           Header set Set-Cookie testcookie "expr=-z %{req:Cookie}"
206         </highlight>
207       </li>
208     </ol>
209 </section>
210
211 <directivesynopsis>
212 <name>RequestHeader</name>
213 <description>Configure les en-t&ecirc;tes d'une requ&ecirc;te HTTP</description>
214 <syntax>RequestHeader add|append|edit|edit*|merge|set|unset <var>en-t&ecirc;te</var>
215 [<var>valeur</var>] [<var>remplacement</var>] [early|env=[!]<var>variable</var>]</syntax>
216 <contextlist><context>server config</context><context>virtual host</context>
217 <context>directory</context><context>.htaccess</context></contextlist>
218 <override>FileInfo</override>
219
220 <usage>
221     <p>Cette directive permet de remplacer, fusionner, modifier ou
222     supprimer des en-t&ecirc;tes de requ&ecirc;te HTTP. L'en-t&ecirc;te est modifi&eacute; juste
223     avant que le gestionnaire de contenu ne s'ex&eacute;cute, ce qui permet la
224     modification des en-t&ecirc;tes entrants. L'action effectu&eacute;e est
225     d&eacute;termin&eacute;e par le premier argument. Ce dernier accepte les valeurs
226     suivantes :</p>
227
228     <dl>
229
230     <dt><code>add</code></dt>
231     <dd>L'en-t&ecirc;te est ajout&eacute; au jeu d'en-t&ecirc;tes pr&eacute;existant, m&ecirc;me s'il
232     existe d&eacute;j&agrave;. Ceci peut conduire &agrave; la pr&eacute;sence de deux (ou plusieurs)
233     en-t&ecirc;tes poss&egrave;dant le m&ecirc;me nom et donc induire des cons&eacute;quences
234     impr&eacute;vues ; en g&eacute;n&eacute;ral, il est pr&eacute;f&eacute;rable d'utiliser
235     <code>set</code>, <code>append</code> ou <code>merge</code>.</dd>
236
237     <dt><code>append</code></dt>
238     <dd>La valeur d'en-t&ecirc;te est ajout&eacute;e &agrave; tout en-t&ecirc;te existant de m&ecirc;me
239     nom. Lorsqu'une nouvelle valeur est ainsi ajout&eacute;e, elle est s&eacute;par&eacute;e
240     de celles qui sont d&eacute;j&agrave; pr&eacute;sentes par une virgule. Il s'agit de la
241     m&eacute;thode HTTP standard permettant d'affecter plusieurs valeurs &agrave; un
242     en-t&ecirc;te.</dd>
243
244     <dt><code>edit*</code></dt>
245     <dd>Si l'en-t&ecirc;te existe, sa valeur est modifi&eacute;e en fonction d'une
246     <glossary ref="regex">expression rationnelle</glossary> de type
247     recherche/remplacement. L'argument <var>valeur</var> est une
248     <glossary ref="regex">expression rationnelle</glossary>, et
249     l'argument <var>remplacement</var> une cha&icirc;ne de caract&egrave;res de
250     remplacement qui peut contenir des r&eacute;f&eacute;rences arri&egrave;res. Avec
251     <code>edit</code>, la cha&icirc;ne de l'en-t&ecirc;te correspondant au mod&egrave;le ne
252     sera recherch&eacute;e et remplac&eacute;e qu'une seule fois, alors qu'avec
253     <code>edit*</code>, elle le sera pour chacune de ses instances si
254     elle appara&icirc;t plusieurs fois.</dd>
255
256     <dt><code>merge</code></dt>
257     <dd>La valeur d'en-t&ecirc;te est ajout&eacute;e &agrave; tout en-t&ecirc;te de m&ecirc;me nom, sauf
258     si elle appara&icirc;t d&eacute;j&agrave; dans la liste des valeurs pr&eacute;existantes de
259     l'en-t&ecirc;te s&eacute;par&eacute;es par des virgules. Lorsqu'une nouvelle valeur est
260     ainsi ajout&eacute;e, elle est s&eacute;par&eacute;e de celles qui sont d&eacute;j&agrave; pr&eacute;sentes
261     par une virgule. Il s'agit de la m&eacute;thode HTTP standard permettant
262     d'affecter plusieurs valeurs &agrave; un en-t&ecirc;te. Les valeurs sont
263     compar&eacute;es en tenant compte de la casse, et apr&egrave;s le traitement de
264     tous les sp&eacute;cificateurs de format. Une valeur entour&eacute;e de guillemets
265     est consid&eacute;r&eacute;e comme diff&eacute;rente de la m&ecirc;me valeur mais sans
266     guillemets.</dd>
267
268     <dt><code>set</code></dt>
269     <dd>L'en-t&ecirc;te est d&eacute;fini, rempla&ccedil;ant tout en-t&ecirc;te pr&eacute;existant avec
270     le m&ecirc;me nom.</dd>
271
272     <dt><code>unset</code></dt>
273     <dd>L'en-t&ecirc;te est supprim&eacute; s'il existe. Si plusieurs en-t&ecirc;tes
274     poss&egrave;dent le m&ecirc;me nom, ils seront tous supprim&eacute;s. L'argument
275     <var>value</var> ne doit pas appara&icirc;tre.</dd>
276     </dl>
277
278     <p>Cet argument est suivi d'un nom d'en-t&ecirc;te qui peut se terminer
279     par un caract&egrave;re ':', mais ce n'est pas obligatoire. La casse est
280     ignor&eacute;e. Avec <code>set</code>, <code>append</code>,
281     <code>merge</code> et <code>add</code>, une <var>valeur</var> est
282     fournie en troisi&egrave;me argument. Si une <var>valeur</var> contient des
283     espaces, elle doit &ecirc;tre entour&eacute;e de guillemets. Avec
284     <code>unset</code>, aucune <var>valeur</var> ne doit appara&icirc;tre.
285     <var>valeur</var> peut &ecirc;tre une cha&icirc;ne de caract&egrave;res, une cha&icirc;ne
286     contenant des sp&eacute;cificateurs de format, ou une combinaison des deux.
287     Les sp&eacute;cificateurs de format support&eacute;s sont les m&ecirc;mes que ceux de la
288     directive <directive module="mod_headers">Header</directive>, &agrave;
289     laquelle vous pouvez vous reporter pour plus de d&eacute;tails. Avec
290     <code>edit</code>, les deux arguments <var>valeur</var> et
291     <var>remplacement</var> sont obligatoires, et correspondent
292     respectivement &agrave; une <glossary ref="regex">expression
293     rationnelle</glossary> et &agrave; une cha&icirc;ne de remplacement.</p>
294
295     <p>La directive <directive>RequestHeader</directive> peut &ecirc;tre
296     suivie d'un argument suppl&eacute;mentaire, qui pourra prendre les valeurs
297     suivantes :</p>
298     <dl>
299     <dt><code>early</code></dt>
300     <dd>Sp&eacute;cifie <a href="#early">traitement pr&eacute;alable</a>.</dd>
301     <dt><code>env=[!]<var>variable</var></code></dt>
302     <dd>La directive est appliqu&eacute;e si et seulement si la <a
303     href="../env.html">variable d'environnement</a>
304     <code>variable</code> existe. Un <code>!</code> devant
305     <code>variable</code> inverse le test, et la directive ne
306     s'appliquera alors que si <code>variable</code> n'est pas d&eacute;finie.</dd>
307     <dt><code>expr=<var>expression</var></code></dt>
308     <dd>La directive s'applique si et seulement si <var>expression</var>
309     est &eacute;valu&eacute;e &agrave; true. Vous trouverez plus de d&eacute;tails &agrave; propos de la
310     syntaxe et de l'&eacute;valuation des expressions dans la documentation <a
311     href="../expr.html">ap_expr</a>.</dd>
312     </dl>
313
314     <p>Except&eacute; le cas du mode <a href="#early">pr&eacute;coce</a>, la directive
315     <directive>RequestHeader</directive> est trait&eacute;e juste avant la
316     prise en compte de la requ&ecirc;te par son gestionnaire, au cours de la
317     phase de v&eacute;rification. Ceci permet la modification des en-t&ecirc;tes
318     g&eacute;n&eacute;r&eacute;s par le navigateur, ou par les filtres en entr&eacute;e
319     d'Apache.</p>
320 </usage>
321 </directivesynopsis>
322
323 <directivesynopsis>
324 <name>Header</name>
325 <description>Configure les en-t&ecirc;tes d'une r&eacute;ponse HTTP</description>
326 <syntax>Header [<var>condition</var>] add|append|echo|edit|merge|set|unset
327 <var>en-t&ecirc;te</var> [<var>valeur</var>] [early|env=[!]<var>variable</var>]</syntax>
328 <contextlist><context>server config</context><context>virtual host</context>
329 <context>directory</context><context>.htaccess</context></contextlist>
330 <override>FileInfo</override>
331 <compatibility>La condition par d&eacute;faut est temporairement pass&eacute;e
332 &agrave; "always" dans les version 2.3.9 et 2.3.10</compatibility>
333
334 <usage>
335     <p>Cette directive permet de remplacer, fusionner, ou
336     supprimer des en-t&ecirc;tes de r&eacute;ponse HTTP. L'en-t&ecirc;te est modifi&eacute; juste
337     apr&egrave;s que le gestionnaire de contenu et les filtres en sortie ne
338     s'ex&eacute;cutent, ce qui permet la modification des en-t&ecirc;tes
339     sortants.</p>
340
341     <p>L'argument optionnel <var>condition</var> permet de d&eacute;terminer
342     sur quelle table interne d'en-t&ecirc;tes de r&eacute;ponses cette directive va
343     op&eacute;rer. D'autres composants du serveur peuvent avoir stock&eacute; leurs
344     en-t&ecirc;tes de r&eacute;ponses dans la table correspondant &agrave;
345     <code>onsuccess</code> ou dans celle correspondant &agrave;
346     <code>always</code>. Dans ce contexte, "Always" fait r&eacute;f&eacute;rence au
347     choix d'envoyer les en-t&ecirc;tes que vous ajoutez aux r&eacute;ponses, qu'elle
348     soient avec succ&egrave;s ou &eacute;chou&eacute;es ; par contre, si votre action est une
349     fonction d'un en-t&ecirc;te existant, vous devrez lire la documentation de
350     mani&egrave;re plus approfondie car dans ce cas, les choses se compliquent.</p>
351
352     <p>Vous pouvez avoir &agrave; changer la valeur par d&eacute;faut
353     <code>onsuccess</code> en <code>always</code> dans des circonstances
354     similaires &agrave; celles expos&eacute;es plus loin. Notez aussi que la r&eacute;p&eacute;tition
355     de cette directive avec les deux conditions peut &ecirc;tre pertinente
356     dans certains sc&eacute;narios, car <code>always</code> n'englobe pas
357     <code>onsuccess</code> en ce qui concerne les en-t&ecirc;tes existants :</p>
358
359     <ul>
360        <li>Vous ajoutez un en-t&ecirc;te &agrave; une r&eacute;ponse &eacute;chou&eacute;e (non-2xx),
361        une redirection par exemple, et dans ce cas, seule la table
362        correspondant &agrave; <code>always</code> est utilis&eacute;e dans la r&eacute;ponse
363        d&eacute;finitive.</li>
364        <li>Vous modifiez ou supprimez un en-t&ecirc;te g&eacute;n&eacute;r&eacute; par un script
365        CGI, et dans ce cas, les scripts CGI sont dans la table
366        correspondant &agrave; <code>always</code> et non dans la table par
367        d&eacute;faut.</li>
368        <li>Vous modifiez ou supprimez un en-t&ecirc;te g&eacute;n&eacute;r&eacute; par tel ou tel
369        composant du serveur, mais cet en-t&ecirc;te n'est pas trouv&eacute; par la
370        condition par d&eacute;faut <code>onsuccess</code>.</li>
371     </ul>
372
373     <p>L'action que cette directive provoque est d&eacute;termin&eacute;e par le
374     premier argument (ou par le second argument si une
375     <var>condition</var> est sp&eacute;cifi&eacute;e). Il peut prendre
376     une des valeurs suivantes :</p>
377
378     <dl>
379     <dt><code>add</code></dt>
380     <dd>L'en-t&ecirc;te est ajout&eacute; au jeu d'en-t&ecirc;tes pr&eacute;existant, m&ecirc;me s'il
381     existe d&eacute;j&agrave;. Ceci peut conduire &agrave; la pr&eacute;sence de deux (ou plusieurs)
382     en-t&ecirc;tes poss&egrave;dant le m&ecirc;me nom et donc induire des cons&eacute;quences
383     impr&eacute;vues ; en g&eacute;n&eacute;ral, il est pr&eacute;f&eacute;rable d'utiliser
384     <code>set</code>, <code>append</code> ou <code>merge</code>.</dd>
385
386     <dt><code>append</code></dt>
387     <dd>La valeur d'en-t&ecirc;te est ajout&eacute;e &agrave; tout en-t&ecirc;te existant de m&ecirc;me
388     nom. Lorsqu'une nouvelle valeur est ainsi ajout&eacute;e, elle est s&eacute;par&eacute;e
389     de celles qui sont d&eacute;j&agrave; pr&eacute;sentes par une virgule. Il s'agit de la
390     m&eacute;thode HTTP standard permettant d'affecter plusieurs valeurs &agrave; un
391     en-t&ecirc;te.</dd>
392
393     <dt><code>echo</code></dt>
394     <dd>Les en-t&ecirc;tes de la requ&ecirc;te poss&eacute;dant le nom sp&eacute;cifi&eacute; sont
395     recopi&eacute;s vers les en-t&ecirc;tes de la r&eacute;ponse. <var>en-t&ecirc;te</var> peut
396     &ecirc;tre une <glossary ref="regex">expression rationnelle</glossary>, et
397     <var>valeur</var> ne doit pas &ecirc;tre pr&eacute;sent.</dd>
398
399     <dt><code>edit</code></dt>
400     <dd>Si l'en-t&ecirc;te existe, sa valeur est modifi&eacute;e en fonction d'une
401     <glossary ref="regex">expression rationnelle</glossary> de type
402     recherche/remplacement. L'argument <var>valeur</var> est une
403     <glossary ref="regex">expression rationnelle</glossary>, et
404     l'argument <var>remplacement</var> une cha&icirc;ne de caract&egrave;res de
405     remplacement qui peut contenir des r&eacute;f&eacute;rences arri&egrave;res.</dd>
406
407     <dt><code>merge</code></dt>
408     <dd>La valeur d'en-t&ecirc;te est ajout&eacute;e &agrave; tout en-t&ecirc;te de m&ecirc;me nom, sauf
409     si elle appara&icirc;t d&eacute;j&agrave; dans la liste des valeurs pr&eacute;existantes de
410     l'en-t&ecirc;te s&eacute;par&eacute;es par des virgules. Lorsqu'une nouvelle valeur est
411     ainsi ajout&eacute;e, elle est s&eacute;par&eacute;e de celles qui sont d&eacute;j&agrave; pr&eacute;sentes
412     par une virgule. Il s'agit de la m&eacute;thode HTTP standard permettant
413     d'affecter plusieurs valeurs &agrave; un en-t&ecirc;te. Les valeurs sont
414     compar&eacute;es en tenant compte de la casse, et apr&egrave;s le traitement de
415     tous les sp&eacute;cificateurs de format. Une valeur entour&eacute;e de guillemets
416     est consid&eacute;r&eacute;e comme diff&eacute;rente de la m&ecirc;me valeur mais sans
417     guillemets.</dd>
418
419     <dt><code>set</code></dt>
420     <dd>L'en-t&ecirc;te est d&eacute;fini, rempla&ccedil;ant tout en-t&ecirc;te pr&eacute;existant avec
421     le m&ecirc;me nom. L'argument <var>valeur</var> peut &ecirc;tre une cha&icirc;ne de
422     formatage.</dd>
423
424     <dt><code>unset</code></dt>
425     <dd>L'en-t&ecirc;te est supprim&eacute; s'il existe. Si plusieurs en-t&ecirc;tes
426     poss&egrave;dent le m&ecirc;me nom, ils seront tous supprim&eacute;s. L'argument
427     <var>value</var> ne doit pas appara&icirc;tre.</dd>
428     </dl>
429
430     <p>Cet argument est suivi d'un nom d'<var>en-t&ecirc;te</var> qui peut se
431     terminer par un caract&egrave;re ':', mais ce n'est pas obligatoire. La
432     casse est ignor&eacute;e avec <code>set</code>, <code>append</code>,
433     <code>merge</code>, <code>add</code>, <code>unset</code> et
434     <code>edit</code>. Le nom d'<var>en-t&ecirc;te</var> est sensible &agrave; la
435     casse pour <code>echo</code> et peut &ecirc;tre une <glossary
436     ref="regex">expression rationnelle</glossary>.</p>
437
438     <p>Avec <code>set</code>, <code>append</code>, <code>merge</code> et
439     <code>add</code>, une <var>valeur</var> est sp&eacute;cifi&eacute;e comme
440     argument suivant. Si <var>valeur</var> contient des espaces, elle
441     doit &ecirc;tre entour&eacute;e de guillemets. <var>valeur</var> peut &ecirc;tre une
442     cha&icirc;ne de caract&egrave;res, une cha&icirc;ne contenant des sp&eacute;cificateurs de
443     format, ou une combinaison des deux. <var>valeur</var> supporte les
444     sp&eacute;cificateurs de format suivants :</p>
445
446     <table border="1" style="zebra">
447     <columnspec><column width=".25"/><column width=".75"/></columnspec>
448     <tr><th>Format</th><th>Description</th></tr>
449     <tr><td><code>%%</code></td>
450         <td>Le caract&egrave;re pourcentage</td></tr>
451
452     <tr><td><code>%t</code></td>
453         <td>Le moment de r&eacute;ception de la requ&ecirc;te en temps
454         universel coordonn&eacute; depuis le temps epoch (Jan. 1, 1970) et
455         exprim&eacute; en microsecondes. La valeur est pr&eacute;c&eacute;d&eacute;e de
456         <code>t=</code>.</td></tr>
457
458     <tr><td><code>%D</code></td>
459         <td>Le temps &eacute;coul&eacute; entre la r&eacute;ception de la requ&ecirc;te et l'envoi
460         des en-t&ecirc;tes sur le r&eacute;seau. Il s'agit de la dur&eacute;e de traitement
461         de la requ&ecirc;te. La valeur est pr&eacute;c&eacute;d&eacute;e de <code>D=</code>. La
462         valeur est exprim&eacute;e en microsecondes.</td></tr>
463
464     <tr><td><code>%{NOM_VARIABLE}e</code></td>
465         <td>Le contenu de la <a href="../env.html">variable
466         d'environnement</a> <code>NOM_VARIABLE</code>.</td></tr>
467
468     <tr><td><code>%{NOM_VARIABLE}s</code></td>
469         <td>Le contenu de la <a href="../env.html">variable
470         d'environnement SSL</a> <code>NOM_VARIABLE</code>, si
471         <module>mod_ssl</module> est activ&eacute;.</td></tr>
472
473     </table>
474
475     <note><title>Note</title>
476       <p>Le sp&eacute;cificateur de format <code>%s</code> est disponible
477       depuis la version 2.1 d'Apache ; il peut &ecirc;tre utilis&eacute; &agrave; la place
478       de <code>%e</code> pour &eacute;viter de devoir sp&eacute;cifier
479       <code>SSLOptions +StdEnvVars</code>. Cependant, si
480       <code>SSLOptions +StdEnvVars</code> doit tout de m&ecirc;me &ecirc;tre
481       sp&eacute;cifi&eacute; pour une raison quelconque, <code>%e</code> sera plus
482       efficace que <code>%s</code>.</p>
483     </note>
484
485     <p><code>edit</code>n&eacute;cessite les deux arguments
486     <var>valeur</var>, qui est une <glossary ref="regex">expression
487     rationnelle</glossary>, et une cha&icirc;ne additionnelle
488     <var>remplacement</var>.</p>
489
490     <p>La directive <directive>Header</directive> peut &ecirc;tre suivie d'un
491     argument additionnel qui peut prendre les valeurs suivantes :</p>
492
493     <dl>
494     <dt><code>early</code></dt>
495     <dd>Sp&eacute;cifie <a href="#early">traitement pr&eacute;alable</a>.</dd>
496     <dt><code>env=[!]<var>variable</var></code></dt>
497     <dd>La directive est appliqu&eacute;e si et seulement si la <a
498     href="../env.html">variable d'environnement</a>
499     <code>variable</code> existe. Un <code>!</code> devant
500     <code>variable</code> inverse le test, et la directive ne
501     s'appliquera alors que si <code>variable</code> n'est pas d&eacute;finie.</dd>
502     <dt><code>expr=<var>expression</var></code></dt>
503     <dd>La directive s'applique si et seulement si <var>expression</var>
504     est &eacute;valu&eacute;e &agrave; true. Vous trouverez plus de d&eacute;tails &agrave; propos de la
505     syntaxe et de l'&eacute;valuation des expressions dans la documentation <a
506     href="../expr.html">ap_expr</a>.</dd>
507     </dl>
508
509     <p>Except&eacute; le cas du mode <a href="#early">pr&eacute;coce</a>, les
510     directives <directive>Header</directive> sont trait&eacute;es juste avant
511     l'envoi de la r&eacute;ponse sur le r&eacute;seau. Cela signifie qu'il est
512     possible de d&eacute;finir et/ou modifier la plupart des en-t&ecirc;tes, &agrave;
513     l'exception de ceux qui sont ajout&eacute;s par le filtre HTTP
514     d'en-t&ecirc;te, comme Content-Type.</p>
515 </usage>
516 </directivesynopsis>
517
518 </modulesynopsis>
519