mod_headers.xml.fr revision 6b779ab5be3e1a57d8e98951dc8614a312fcefa9
<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "/style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="/style/manual.fr.xsl"?>
<!-- English Revision : 1231446 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<modulesynopsis metafile="mod_headers.xml.meta">
<name>mod_headers</name>
<description>Personnalisation des en-t&ecirc;tes de requ&ecirc;tes et de r&eacute;ponses
HTTP</description>
<status>Extension</status>
<sourcefile>mod_headers.c</sourcefile>
<identifier>headers_module</identifier>
<summary>
<p>Ce module fournit des directives permettant de contr&ocirc;ler et
modifier les en-t&ecirc;tes de requ&ecirc;tes et de r&eacute;ponses HTTP. Les en-t&ecirc;tes
peuvent &ecirc;tre fusionn&eacute;s, remplac&eacute;s ou supprim&eacute;s.</p>
</summary>
<section id="order"><title>Chronologie du traitement</title>
<p>Les directives fournies par <module>mod_headers</module> peuvent
s'ins&eacute;rer presque partout dans la configuration du serveur, et on
peut limiter leur port&eacute;e en les pla&ccedil;ant dans des <a
href="/sections.html">sections de configuration</a>.</p>
<p>La chronologie du traitement est importante et est affect&eacute;e par
l'ordre d'apparition des directives dans le fichier de configuration
et par leur placement dans les <a
href="/sections.html#mergin">sections de configuration</a>. Ainsi,
ces deux directives ont un effet diff&eacute;rent si leur ordre est invers&eacute;
:</p>
<example>
RequestHeader append MirrorID "mirror 12"<br />
RequestHeader unset MirrorID
</example>
<p>Dans cet ordre, l'en-t&ecirc;te <code>MirrorID</code> n'est pas d&eacute;fini.
Si l'ordre des directives &eacute;tait invers&eacute;, l'en-t&ecirc;te
<code>MirrorID</code> serait d&eacute;fini &agrave; "mirror 12".</p>
</section>
<section id="early"><title>Traitement pr&eacute;coce et traitement
tardif</title>
<p><module>mod_headers</module> peut agir soir pr&eacute;cocement, soit
tardivement au niveau de la requ&ecirc;te. Le mode normal est le mode
tardif, lorsque les en-t&ecirc;tes de <em>requ&ecirc;te</em> sont d&eacute;finis, imm&eacute;diatement
avant l'ex&eacute;cution du g&eacute;n&eacute;rateur de contenu, et pour les en-t&ecirc;tes de
<em>r&eacute;ponse</em>, juste au moment o&ugrave; la r&eacute;ponse est envoy&eacute;e sur le r&eacute;seau.
Utilisez toujours le mode tardif sur un serveur en production.</p>
<p>Le mode pr&eacute;coce a &eacute;t&eacute; con&ccedil;u &agrave; des fins d'aide aux tests et au
d&eacute;bogage pour les d&eacute;veloppeurs. Les directives d&eacute;finies en utilisant
le mot-cl&eacute; <code>early</code> sont cens&eacute;es agir au tout d&eacute;but du
traitement de la requ&ecirc;te. Cela signifie que l'on peut les utiliser
pour simuler diff&eacute;rentes requ&ecirc;tes et d&eacute;finir des situations de test,
tout en gardant &agrave; l'esprit que les en-t&ecirc;tes peuvent &ecirc;tre modifi&eacute;s &agrave;
tout moment par d'autres modules avant que le r&eacute;ponse ne soit
g&eacute;n&eacute;r&eacute;e.</p>
<p>Comme les directives pr&eacute;coces sont trait&eacute;es avant que le
chemin de la requ&ecirc;te ne soit parcouru, les en-t&ecirc;tes
pr&eacute;coces ne peuvent &ecirc;tre d&eacute;finis que dans un contexte de serveur
principal ou de serveur virtuel. Les directives pr&eacute;coces ne peuvent
pas d&eacute;pendre d'un chemin de requ&ecirc;te, si bien qu'elles &eacute;choueront
dans des contextes tels que <code>&lt;Directory&gt;</code> ou
<code>&lt;Location&gt;</code>.</p>
</section>
<section id="examples"><title>Exemples</title>
<ol>
<li>
Copie tous les en-t&ecirc;tes de requ&ecirc;te qui commencent par "TS" vers
les en-t&ecirc;tes de la r&eacute;ponse :
<example>
Header echo ^TS
</example>
</li>
<li>
Ajoute &agrave; la r&eacute;ponse un en-t&ecirc;te, <code>mon-en-t&ecirc;te</code>, qui
contient un horodatage permettant de d&eacute;terminer le moment o&ugrave; la
requ&ecirc;te a &eacute;t&eacute; re&ccedil;ue, et le temps qui s'est &eacute;coul&eacute; jusqu'&agrave; ce que
la requ&ecirc;te ait commenc&eacute; &agrave; &ecirc;tre servie. Cet en-t&ecirc;te peut &ecirc;tre
utilis&eacute; par le client pour estimer la charge du serveur ou
isoler les goulets d'&eacute;tranglement entre le client et le
serveur.
<example>
Header set mon-en-t&ecirc;te "%D %t"
</example>
<p>le r&eacute;sultat est l'ajout &agrave; la r&eacute;ponse d'un en-t&ecirc;te du type :</p>
<example>
mon-en-t&ecirc;te: D=3775428 t=991424704447256
</example>
</li>
<li>
Dit Bonjour &agrave; Joe
<example>
Header set mon-en-t&ecirc;te "Bonjour Joe. Il a fallu %D microsecondes \<br />
&agrave; Apache pour servir cette requ&ecirc;te."
</example>
<p>le r&eacute;sultat est l'ajout &agrave; la r&eacute;ponse d'un en-t&ecirc;te du type :</p>
<example>
mon-en-t&ecirc;te: Bonjour Joe. Il a fallu D=3775428 microsecondes &agrave; Apache
pour servir cette requ&ecirc;te.
</example>
</li>
<li>
Ajoute l'en-t&ecirc;te <code>mon-en-t&ecirc;te</code> &agrave; la r&eacute;ponse si et
seulement si l'en-t&ecirc;te <code>mon-en-t&ecirc;te-requ&ecirc;te</code> est
pr&eacute;sent dans la requ&ecirc;te. Ceci peut s'av&eacute;rer utile pour g&eacute;n&eacute;rer
des en-t&ecirc;tes de r&eacute;ponse "&agrave; la t&ecirc;te du client". Notez que cet
exemple n&eacute;cessite les services du module
<module>mod_setenvif</module>.
<example>
SetEnvIf mon-en-t&ecirc;te-requ&ecirc;te mavaleur HAVE_MyRequestHeader<br />
Header set mon-en-t&ecirc;te "%D %t montexte" env=HAVE_MyRequestHeader
</example>
<p>Si l'en-t&ecirc;te <code>mon-en-t&ecirc;te-requ&ecirc;te: mavaleur</code> est
pr&eacute;sent dans la requ&ecirc;te HTTP, la r&eacute;ponse contiendra un en-t&ecirc;te
du type :</p>
<example>
mon-en-t&ecirc;te: D=3775428 t=991424704447256 montexte
</example>
</li>
<li>
Permet &agrave; DAV de fonctionner avec Apache sur SSL (voir la <a
href="http://svn.haxx.se/users/archive-2006-03/0549.shtml">description
du probl&egrave;me</a>) en rempla&ccedil;ant <var>https:</var> par
<var>http:</var> dans l'en-t&ecirc;te <var>Destination</var> :
<example>
RequestHeader edit Destination ^https: http: early
</example>
</li>
<li>
D&eacute;finit la valeur d'un m&ecirc;me en-t&ecirc;te sous de multiples conditions
non exclusives, mais ne duplique pas une valeur d&eacute;j&agrave; d&eacute;finie
dans l'en-t&ecirc;te qui en r&eacute;sulte. Si toutes les conditions
suivantes sont satisfaites pour une requ&ecirc;te (en d'autres termes,
si les trois variables d'environnement <code>CGI</code>,
<code>NO_CACHE</code> et <code>NO_STORE</code> existent pour la
requ&ecirc;te) :
<example>
Header merge Cache-Control no-cache env=CGI<br />
Header merge Cache-Control no-cache env=NO_CACHE<br />
Header merge Cache-Control no-store env=NO_STORE
</example>
<p>alors, la r&eacute;ponse contiendra l'en-t&ecirc;te suivant :</p>
<example>
Cache-Control: no-cache, no-store
</example>
<p>Si <code>append</code> avait &eacute;t&eacute; utilis&eacute; &agrave; la place de
<code>merge</code>, la r&eacute;ponse aurait contenu l'en-t&ecirc;te suivant
:</p>
<example>
Cache-Control: no-cache, no-cache, no-store
</example>
</li>
<li>
D&eacute;finit un cookie de test si et seulement si le client n'envoie
pas de cookie
<example>
Header set Set-Cookie testcookie "expr=-z %{req:Cookie}"
</example>
</li>
</ol>
</section>
<directivesynopsis>
<name>RequestHeader</name>
<description>Configure les en-t&ecirc;tes d'une requ&ecirc;te HTTP</description>
<syntax>RequestHeader add|append|edit|edit*|merge|set|unset <var>en-t&ecirc;te</var>
[<var>valeur</var>] [<var>remplacement</var>] [early|env=[!]<var>variable</var>]</syntax>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>
<usage>
<p>Cette directive permet de remplacer, fusionner, modifier ou
supprimer des en-t&ecirc;tes de requ&ecirc;te HTTP. L'en-t&ecirc;te est modifi&eacute; juste
avant que le gestionnaire de contenu ne s'ex&eacute;cute, ce qui permet la
modification des en-t&ecirc;tes entrants. L'action effectu&eacute;e est
d&eacute;termin&eacute;e par le premier argument. Ce dernier accepte les valeurs
suivantes :</p>
<dl>
<dt><code>add</code></dt>
<dd>L'en-t&ecirc;te est ajout&eacute; au jeu d'en-t&ecirc;tes pr&eacute;existant, m&ecirc;me s'il
existe d&eacute;j&agrave;. Ceci peut conduire &agrave; la pr&eacute;sence de deux (ou plusieurs)
en-t&ecirc;tes poss&egrave;dant le m&ecirc;me nom et donc induire des cons&eacute;quences
impr&eacute;vues ; en g&eacute;n&eacute;ral, il est pr&eacute;f&eacute;rable d'utiliser
<code>set</code>, <code>append</code> ou <code>merge</code>.</dd>
<dt><code>append</code></dt>
<dd>La valeur d'en-t&ecirc;te est ajout&eacute;e &agrave; tout en-t&ecirc;te existant de m&ecirc;me
nom. Lorsqu'une nouvelle valeur est ainsi ajout&eacute;e, elle est s&eacute;par&eacute;e
de celles qui sont d&eacute;j&agrave; pr&eacute;sentes par une virgule. Il s'agit de la
m&eacute;thode HTTP standard permettant d'affecter plusieurs valeurs &agrave; un
en-t&ecirc;te.</dd>
<dt><code>edit*</code></dt>
<dd>Si l'en-t&ecirc;te existe, sa valeur est modifi&eacute;e en fonction d'une
<glossary ref="regex">expression rationnelle</glossary> de type
recherche/remplacement. L'argument <var>valeur</var> est une
<glossary ref="regex">expression rationnelle</glossary>, et
l'argument <var>remplacement</var> une cha&icirc;ne de caract&egrave;res de
remplacement qui peut contenir des r&eacute;f&eacute;rences arri&egrave;res. Avec
<code>edit</code>, la cha&icirc;ne de l'en-t&ecirc;te correspondant au mod&egrave;le ne
sera recherch&eacute;e et remplac&eacute;e qu'une seule fois, alors qu'avec
<code>edit*</code>, elle le sera pour chacune de ses instances si
elle appara&icirc;t plusieurs fois.</dd>
<dt><code>merge</code></dt>
<dd>La valeur d'en-t&ecirc;te est ajout&eacute;e &agrave; tout en-t&ecirc;te de m&ecirc;me nom, sauf
si elle appara&icirc;t d&eacute;j&agrave; dans la liste des valeurs pr&eacute;existantes de
l'en-t&ecirc;te s&eacute;par&eacute;es par des virgules. Lorsqu'une nouvelle valeur est
ainsi ajout&eacute;e, elle est s&eacute;par&eacute;e de celles qui sont d&eacute;j&agrave; pr&eacute;sentes
par une virgule. Il s'agit de la m&eacute;thode HTTP standard permettant
d'affecter plusieurs valeurs &agrave; un en-t&ecirc;te. Les valeurs sont
compar&eacute;es en tenant compte de la casse, et apr&egrave;s le traitement de
tous les sp&eacute;cificateurs de format. Une valeur entour&eacute;e de guillemets
est consid&eacute;r&eacute;e comme diff&eacute;rente de la m&ecirc;me valeur mais sans
guillemets.</dd>
<dt><code>set</code></dt>
<dd>L'en-t&ecirc;te est d&eacute;fini, rempla&ccedil;ant tout en-t&ecirc;te pr&eacute;existant avec
le m&ecirc;me nom.</dd>
<dt><code>unset</code></dt>
<dd>L'en-t&ecirc;te est supprim&eacute; s'il existe. Si plusieurs en-t&ecirc;tes
poss&egrave;dent le m&ecirc;me nom, ils seront tous supprim&eacute;s. L'argument
<var>value</var> ne doit pas appara&icirc;tre.</dd>
</dl>
<p>Cet argument est suivi d'un nom d'en-t&ecirc;te qui peut se terminer
par un caract&egrave;re ':', mais ce n'est pas obligatoire. La casse est
ignor&eacute;e. Avec <code>set</code>, <code>append</code>,
<code>merge</code> et <code>add</code>, une <var>valeur</var> est
fournie en troisi&egrave;me argument. Si une <var>valeur</var> contient des
espaces, elle doit &ecirc;tre entour&eacute;e de guillemets. Avec
<code>unset</code>, aucune <var>valeur</var> ne doit appara&icirc;tre.
<var>valeur</var> peut &ecirc;tre une cha&icirc;ne de caract&egrave;res, une cha&icirc;ne
contenant des sp&eacute;cificateurs de format, ou une combinaison des deux.
Les sp&eacute;cificateurs de format support&eacute;s sont les m&ecirc;mes que ceux de la
directive <directive module="mod_headers">Header</directive>, &agrave;
laquelle vous pouvez vous reporter pour plus de d&eacute;tails. Avec
<code>edit</code>, les deux arguments <var>valeur</var> et
<var>remplacement</var> sont obligatoires, et correspondent
respectivement &agrave; une <glossary ref="regex">expression
rationnelle</glossary> et &agrave; une cha&icirc;ne de remplacement.</p>
<p>La directive <directive>RequestHeader</directive> peut &ecirc;tre
suivie d'un argument suppl&eacute;mentaire, qui pourra prendre les valeurs
suivantes :</p>
<dl>
<dt><code>early</code></dt>
<dd>Sp&eacute;cifie <a href="#early">traitement pr&eacute;alable</a>.</dd>
<dt><code>env=[!]<var>variable</var></code></dt>
<dd>La directive est appliqu&eacute;e si et seulement si la <a
href="/env.html">variable d'environnement</a>
<code>variable</code> existe. Un <code>!</code> devant
<code>variable</code> inverse le test, et la directive ne
s'appliquera alors que si <code>variable</code> n'est pas d&eacute;finie.</dd>
<dt><code>expr=<var>expression</var></code></dt>
<dd>La directive s'applique si et seulement si <var>expression</var>
est &eacute;valu&eacute;e &agrave; true. Vous trouverez plus de d&eacute;tails &agrave; propos de la
syntaxe et de l'&eacute;valuation des expressions dans la documentation <a
href="/expr.html">ap_expr</a>.</dd>
</dl>
<p>Except&eacute; le cas du mode <a href="#early">pr&eacute;coce</a>, la directive
<directive>RequestHeader</directive> est trait&eacute;e juste avant la
prise en compte de la requ&ecirc;te par son gestionnaire, au cours de la
phase de v&eacute;rification. Ceci permet la modification des en-t&ecirc;tes
g&eacute;n&eacute;r&eacute;s par le navigateur, ou par les filtres en entr&eacute;e
d'Apache.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>Header</name>
<description>Configure les en-t&ecirc;tes d'une r&eacute;ponse HTTP</description>
<syntax>Header [<var>condition</var>] add|append|echo|edit|merge|set|unset
<var>en-t&ecirc;te</var> [<var>valeur</var>] [early|env=[!]<var>variable</var>]</syntax>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>
<compatibility>La condition par d&eacute;faut est temporairement pass&eacute;e
&agrave; "always" dans les version 2.3.9 et 2.3.10</compatibility>
<usage>
<p>Cette directive permet de remplacer, fusionner, ou
supprimer des en-t&ecirc;tes de r&eacute;ponse HTTP. L'en-t&ecirc;te est modifi&eacute; juste
apr&egrave;s que le gestionnaire de contenu et les filtres en sortie ne
s'ex&eacute;cutent, ce qui permet la modification des en-t&ecirc;tes
sortants.</p>
<p>L'argument optionnel <var>condition</var> permet de d&eacute;terminer
sur quelle table interne d'en-t&ecirc;tes de r&eacute;ponses cette directive va
op&eacute;rer. D'autres composants du serveur peuvent avoir stock&eacute; leurs
en-t&ecirc;tes de r&eacute;ponses dans la table correspondant &agrave;
<code>onsuccess</code> ou dans celle correspondant &agrave;
<code>always</code>. Dans ce contexte, "Always" fait r&eacute;f&eacute;rence au
choix d'envoyer les en-t&ecirc;tes que vous ajoutez aux r&eacute;ponses, qu'elle
soient avec succ&egrave;s ou &eacute;chou&eacute;es ; par contre, si votre action est une
fonction d'un en-t&ecirc;te existant, vous devrez lire la documentation de
mani&egrave;re plus approfondie car dans ce cas, les choses se compliquent.</p>
<p>Vous pouvez avoir &agrave; changer la valeur par d&eacute;faut
<code>onsuccess</code> en <code>always</code> dans des circonstances
similaires &agrave; celles expos&eacute;es plus loin. Notez aussi que la r&eacute;p&eacute;tition
de cette directive avec les deux conditions peut &ecirc;tre pertinente
dans certains sc&eacute;narios, car <code>always</code> n'englobe pas
<code>onsuccess</code> en ce qui concerne les en-t&ecirc;tes existants :</p>
<ul>
<li>Vous ajoutez un en-t&ecirc;te &agrave; une r&eacute;ponse &eacute;chou&eacute;e (non-2xx),
une redirection par exemple, et dans ce cas, seule la table
correspondant &agrave; <code>always</code> est utilis&eacute;e dans la r&eacute;ponse
d&eacute;finitive.</li>
<li>Vous modifiez ou supprimez un en-t&ecirc;te g&eacute;n&eacute;r&eacute; par un script
CGI, et dans ce cas, les scripts CGI sont dans la table
correspondant &agrave; <code>always</code> et non dans la table par
d&eacute;faut.</li>
<li>Vous modifiez ou supprimez un en-t&ecirc;te g&eacute;n&eacute;r&eacute; par tel ou tel
composant du serveur, mais cet en-t&ecirc;te n'est pas trouv&eacute; par la
condition par d&eacute;faut <code>onsuccess</code>.</li>
</ul>
<p>L'action que cette directive provoque est d&eacute;termin&eacute;e par le
premier argument (ou par le second argument si une
<var>condition</var> est sp&eacute;cifi&eacute;e). Il peut prendre
une des valeurs suivantes :</p>
<dl>
<dt><code>add</code></dt>
<dd>L'en-t&ecirc;te est ajout&eacute; au jeu d'en-t&ecirc;tes pr&eacute;existant, m&ecirc;me s'il
existe d&eacute;j&agrave;. Ceci peut conduire &agrave; la pr&eacute;sence de deux (ou plusieurs)
en-t&ecirc;tes poss&egrave;dant le m&ecirc;me nom et donc induire des cons&eacute;quences
impr&eacute;vues ; en g&eacute;n&eacute;ral, il est pr&eacute;f&eacute;rable d'utiliser
<code>set</code>, <code>append</code> ou <code>merge</code>.</dd>
<dt><code>append</code></dt>
<dd>La valeur d'en-t&ecirc;te est ajout&eacute;e &agrave; tout en-t&ecirc;te existant de m&ecirc;me
nom. Lorsqu'une nouvelle valeur est ainsi ajout&eacute;e, elle est s&eacute;par&eacute;e
de celles qui sont d&eacute;j&agrave; pr&eacute;sentes par une virgule. Il s'agit de la
m&eacute;thode HTTP standard permettant d'affecter plusieurs valeurs &agrave; un
en-t&ecirc;te.</dd>
<dt><code>echo</code></dt>
<dd>Les en-t&ecirc;tes de la requ&ecirc;te poss&eacute;dant le nom sp&eacute;cifi&eacute; sont
recopi&eacute;s vers les en-t&ecirc;tes de la r&eacute;ponse. <var>en-t&ecirc;te</var> peut
&ecirc;tre une <glossary ref="regex">expression rationnelle</glossary>, et
<var>valeur</var> ne doit pas &ecirc;tre pr&eacute;sent.</dd>
<dt><code>edit</code></dt>
<dd>Si l'en-t&ecirc;te existe, sa valeur est modifi&eacute;e en fonction d'une
<glossary ref="regex">expression rationnelle</glossary> de type
recherche/remplacement. L'argument <var>valeur</var> est une
<glossary ref="regex">expression rationnelle</glossary>, et
l'argument <var>remplacement</var> une cha&icirc;ne de caract&egrave;res de
remplacement qui peut contenir des r&eacute;f&eacute;rences arri&egrave;res.</dd>
<dt><code>merge</code></dt>
<dd>La valeur d'en-t&ecirc;te est ajout&eacute;e &agrave; tout en-t&ecirc;te de m&ecirc;me nom, sauf
si elle appara&icirc;t d&eacute;j&agrave; dans la liste des valeurs pr&eacute;existantes de
l'en-t&ecirc;te s&eacute;par&eacute;es par des virgules. Lorsqu'une nouvelle valeur est
ainsi ajout&eacute;e, elle est s&eacute;par&eacute;e de celles qui sont d&eacute;j&agrave; pr&eacute;sentes
par une virgule. Il s'agit de la m&eacute;thode HTTP standard permettant
d'affecter plusieurs valeurs &agrave; un en-t&ecirc;te. Les valeurs sont
compar&eacute;es en tenant compte de la casse, et apr&egrave;s le traitement de
tous les sp&eacute;cificateurs de format. Une valeur entour&eacute;e de guillemets
est consid&eacute;r&eacute;e comme diff&eacute;rente de la m&ecirc;me valeur mais sans
guillemets.</dd>
<dt><code>set</code></dt>
<dd>L'en-t&ecirc;te est d&eacute;fini, rempla&ccedil;ant tout en-t&ecirc;te pr&eacute;existant avec
le m&ecirc;me nom. L'argument <var>valeur</var> peut &ecirc;tre une cha&icirc;ne de
formatage.</dd>
<dt><code>unset</code></dt>
<dd>L'en-t&ecirc;te est supprim&eacute; s'il existe. Si plusieurs en-t&ecirc;tes
poss&egrave;dent le m&ecirc;me nom, ils seront tous supprim&eacute;s. L'argument
<var>value</var> ne doit pas appara&icirc;tre.</dd>
</dl>
<p>Cet argument est suivi d'un nom d'<var>en-t&ecirc;te</var> qui peut se
terminer par un caract&egrave;re ':', mais ce n'est pas obligatoire. La
casse est ignor&eacute;e avec <code>set</code>, <code>append</code>,
<code>merge</code>, <code>add</code>, <code>unset</code> et
<code>edit</code>. Le nom d'<var>en-t&ecirc;te</var> est sensible &agrave; la
casse pour <code>echo</code> et peut &ecirc;tre une <glossary
ref="regex">expression rationnelle</glossary>.</p>
<p>Avec <code>set</code>, <code>append</code>, <code>merge</code> et
<code>add</code>, une <var>valeur</var> est sp&eacute;cifi&eacute;e comme
argument suivant. Si <var>valeur</var> contient des espaces, elle
doit &ecirc;tre entour&eacute;e de guillemets. <var>valeur</var> peut &ecirc;tre une
cha&icirc;ne de caract&egrave;res, une cha&icirc;ne contenant des sp&eacute;cificateurs de
format, ou une combinaison des deux. <var>valeur</var> supporte les
sp&eacute;cificateurs de format suivants :</p>
<table border="1" style="zebra">
<columnspec><column width=".25"/><column width=".75"/></columnspec>
<tr><th>Format</th><th>Description</th></tr>
<tr><td><code>%%</code></td>
<td>Le caract&egrave;re pourcentage</td></tr>
<tr><td><code>%t</code></td>
<td>Le moment de r&eacute;ception de la requ&ecirc;te en temps
universel coordonn&eacute; depuis le temps epoch (Jan. 1, 1970) et
exprim&eacute; en microsecondes. La valeur est pr&eacute;c&eacute;d&eacute;e de
<code>t=</code>.</td></tr>
<tr><td><code>%D</code></td>
<td>Le temps &eacute;coul&eacute; entre la r&eacute;ception de la requ&ecirc;te et l'envoi
des en-t&ecirc;tes sur le r&eacute;seau. Il s'agit de la dur&eacute;e de traitement
de la requ&ecirc;te. La valeur est pr&eacute;c&eacute;d&eacute;e de <code>D=</code>. La
valeur est exprim&eacute;e en microsecondes.</td></tr>
<tr><td><code>%{NOM_VARIABLE}e</code></td>
<td>Le contenu de la <a href="/env.html">variable
d'environnement</a> <code>NOM_VARIABLE</code>.</td></tr>
<tr><td><code>%{NOM_VARIABLE}s</code></td>
<td>Le contenu de la <a href="/env.html">variable
d'environnement SSL</a> <code>NOM_VARIABLE</code>, si
<module>mod_ssl</module> est activ&eacute;.</td></tr>
</table>
<note><title>Note</title>
<p>Le sp&eacute;cificateur de format <code>%s</code> est disponible
depuis la version 2.1 d'Apache ; il peut &ecirc;tre utilis&eacute; &agrave; la place
de <code>%e</code> pour &eacute;viter de devoir sp&eacute;cifier
<code>SSLOptions +StdEnvVars</code>. Cependant, si
<code>SSLOptions +StdEnvVars</code> doit tout de m&ecirc;me &ecirc;tre
sp&eacute;cifi&eacute; pour une raison quelconque, <code>%e</code> sera plus
efficace que <code>%s</code>.</p>
</note>
<p><code>edit</code>n&eacute;cessite les deux arguments
<var>valeur</var>, qui est une <glossary ref="regex">expression
rationnelle</glossary>, et une cha&icirc;ne additionnelle
<var>remplacement</var>.</p>
<p>La directive <directive>Header</directive> peut &ecirc;tre suivie d'un
argument additionnel qui peut prendre les valeurs suivantes :</p>
<dl>
<dt><code>early</code></dt>
<dd>Sp&eacute;cifie <a href="#early">traitement pr&eacute;alable</a>.</dd>
<dt><code>env=[!]<var>variable</var></code></dt>
<dd>La directive est appliqu&eacute;e si et seulement si la <a
href="/env.html">variable d'environnement</a>
<code>variable</code> existe. Un <code>!</code> devant
<code>variable</code> inverse le test, et la directive ne
s'appliquera alors que si <code>variable</code> n'est pas d&eacute;finie.</dd>
<dt><code>expr=<var>expression</var></code></dt>
<dd>La directive s'applique si et seulement si <var>expression</var>
est &eacute;valu&eacute;e &agrave; true. Vous trouverez plus de d&eacute;tails &agrave; propos de la
syntaxe et de l'&eacute;valuation des expressions dans la documentation <a
href="/expr.html">ap_expr</a>.</dd>
</dl>
<p>Except&eacute; le cas du mode <a href="#early">pr&eacute;coce</a>, les
directives <directive>Header</directive> sont trait&eacute;es juste avant
l'envoi de la r&eacute;ponse sur le r&eacute;seau. Cela signifie qu'il est
possible de d&eacute;finir et/ou modifier la plupart des en-t&ecirc;tes, &agrave;
l'exception de ceux qui sont ajout&eacute;s par le filtre HTTP
d'en-t&ecirc;te, comme Content-Type.</p>
</usage>
</directivesynopsis>
</modulesynopsis>