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: 1782252 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
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
16 http://www.apache.org/licenses/LICENSE-2.0
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.
25 <modulesynopsis metafile="mod_setenvif.xml.meta">
27 <name>mod_setenvif</name>
28 <description>Permet de définir des variables d'environnement en fonction
29 de certaines caractéristiques de la requête</description>
31 <sourcefile>mod_setenvif.c</sourcefile>
32 <identifier>setenvif_module</identifier>
36 <p>Le module <module>mod_setenvif</module> vous permet de définir
37 des variables d'environnement internes de manière conditionnelle en fonction
38 de critères que vous pouvez spécifier. Ces variables d'environnement
39 peuvent être utilisées par d'autres parties du serveur pour prendre
40 des décisions quant aux actions à entreprendre, et pour déterminer
41 si les scripts CGI et les pages SSI doivent pouvoir y accéder.</p>
43 <p>Les directives sont interprétées selon l'ordre dans lequel elles
44 apparaîssent dans les fichiers de configuration. Ainsi, des
45 séquences plus complexes peuvent être utilisées, comme dans cet
46 exemple qui définit netscape si le navigateur est Mozilla et non
49 <highlight language="config">
50 BrowserMatch ^Mozilla netscape
51 BrowserMatch MSIE !netscape
54 <p>Lorsque le serveur cherche un chemin via une <glossary
55 ref="subrequest">sous-requête</glossary> interne (par exemple la
56 recherche d'un <directive
57 module="mod_dir">DirectoryIndex</directive>), ou lorsqu'il génère un
58 listing du contenu d'un répertoire via le module
59 <module>mod_autoindex</module>, la sous-requête n'hérite pas des
60 variables d'environnement spécifiques à la requête. En outre, à cause
61 des phases de l'API auxquelles <module>mod_setenvif</module> prend
62 part, les directives <directive
63 module="mod_setenvif">SetEnvIf</directive> ne sont pas évaluées
64 séparément dans la sous-requête.</p>
68 <seealso><a href="../env.html">Les variables d'environnement et le
69 serveur HTTP Apache</a></seealso>
72 <name>BrowserMatch</name>
73 <description>Définit des variables d'environnement en fonction du
74 contenu de l'en-tête HTTP User-Agent</description>
75 <syntax>BrowserMatch <em>regex [!]env-variable</em>[=<em>valeur</em>]
76 [[!]<em>env-variable</em>[=<em>valeur</em>]] ...</syntax>
77 <contextlist><context>server config</context>
78 <context>virtual host</context><context>directory</context>
79 <context>.htaccess</context></contextlist>
80 <override>FileInfo</override>
83 <p>La directive <directive>BrowserMatch</directive> est un cas
84 particulier de la directive <directive
85 module="mod_setenvif">SetEnvIf</directive>, qui définit des variables
86 d'environnement en fonction du contenu de l'en-tête de requête HTTP
87 <code>User-Agent</code>. Les deux lignes suivantes produisent le même
89 <highlight language="config">
90 BrowserMatch Robot is_a_robot
91 SetEnvIf User-Agent Robot is_a_robot
94 <p>Quelques exemples supplémentaires :</p>
95 <highlight language="config">
96 BrowserMatch ^Mozilla forms jpeg=yes browser=netscape
97 BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript
98 BrowserMatch MSIE !javascript
104 <name>BrowserMatchNoCase</name>
105 <description>Définit des variables d'environnement en fonction du
106 contenu de l'en-tête HTTP User-Agent sans tenir compte de la
108 <syntax>BrowserMatchNoCase <em>regex [!]env-variable</em>[=<em>valeur</em>]
109 [[!]<em>env-variable</em>[=<em>valeur</em>]] ...</syntax>
110 <contextlist><context>server config</context>
111 <context>virtual host</context><context>directory</context>
112 <context>.htaccess</context></contextlist>
113 <override>FileInfo</override>
117 <p>La directive <directive>BrowserMatchNoCase</directive> est
118 identique sur le plan sémantique à la directive <directive
119 module="mod_setenvif">BrowserMatch</directive>. Elle permet
120 cependant une comparaison insensible à la casse. Par exemple :</p>
121 <highlight language="config">
122 BrowserMatchNoCase mac platform=macintosh
123 BrowserMatchNoCase win platform=windows
126 <p>Les directives <directive>BrowserMatch</directive> et
127 <directive>BrowserMatchNoCase</directive> sont des cas particuliers
128 des directives <directive module="mod_setenvif">SetEnvIf</directive>
129 et <directive module="mod_setenvif">SetEnvIfNoCase</directive>.
130 Ainsi, les deux lignes suivantes produisent le même effet :</p>
131 <highlight language="config">
132 BrowserMatchNoCase Robot is_a_robot
133 SetEnvIfNoCase User-Agent Robot is_a_robot
139 <name>SetEnvIf</name>
140 <description>Définit des variables d'environnement en fonction des
141 attributs de la requête</description>
142 <syntax>SetEnvIf <em>attribut
143 regex [!]env-variable</em>[=<em>valeur</em>]
144 [[!]<em>env-variable</em>[=<em>valeur</em>]] ...</syntax>
145 <contextlist><context>server config</context>
146 <context>virtual host</context><context>directory</context>
147 <context>.htaccess</context></contextlist>
148 <override>FileInfo</override>
151 <p>La directive <directive>SetEnvIf</directive> permet de définir
152 des variables d'environnement en fonction des attributs de la
153 requête. L'<em>attribut</em> spécifié comme premier argument peut
154 se présenter sous l'une des formes suivantes :</p>
157 <li>Un champ d'en-tête de requête HTTP (voir la <a
158 href="http://www.rfc-editor.org/rfc/rfc2616.txt">RFC2616</a> pour
159 plus d'information à leur propos) ; par exemple : <code>Host</code>,
160 <code>User-Agent</code>, <code>Referer</code>, ou
161 <code>Accept-Language</code>. Il est possible d'utiliser une
162 expression rationnelle pour spécifier un jeu d'en-têtes de
165 <li>Une des caractéristiques de la requête suivantes :
167 <li><code>Remote_Host</code> - le nom d'hôte (s'il est disponible)
168 du client qui effectue la requête</li>
170 <li><code>Remote_Addr</code> - l'adresse IP du client qui effectue
173 <li><code>Server_Addr</code> - l'adresse IP du serveur qui a reçu
174 la requête (uniquement à partir des versions supérieures à
177 <li><code>Request_Method</code> - Le nom de la méthode HTTP
178 utilisée (<code>GET</code>, <code>POST</code>, <em>et
181 <li><code>Request_Protocol</code> - le nom et la version du
182 protocole utilisé pour la requête (par exemple "HTTP/0.9",
183 "HTTP/1.1", <em>etc...</em>)</li>
185 <li><code>Request_URI</code> - la ressource demandée dans la ligne
186 de requête HTTP -- en général la partie de l'URL suivant le
187 protocole et le nom du serveur, sans la chaîne d'arguments. Voir
188 la directive <directive
189 module="mod_rewrite">RewriteCond</directive> du module
190 <module>mod_rewrite</module> pour plus d'informations sur la
191 manière de mettre en correspondance votre chaîne d'arguments.</li>
195 <li>Le nom d'une variable d'environnement parmi la liste de celles qui
196 sont associées à la requête. Ceci permet à la directive
197 <directive>SetEnvIf</directive> d'effectuer des tests en fonction du
198 résultat de comparaisons précédentes. Seules les variables
199 d'environnement définies par des directives
200 <code>SetEnvIf[NoCase]</code> précédentes sont disponibles pour
201 effectuer des tests de cette manière. 'Précédentes' signifie qu'elles se
202 trouvent à un niveau plus global de la configuration (par exemple au
203 niveau du serveur principal), ou plus haut chronologiquement dans le
204 contexte de la directive. Les variables d'environnement ne seront prises
205 en compte que si aucune correspondance n'a été trouvée parmi les
206 caractéristiques de la requête, et si <em>attribut</em> n'a pas été
207 spécifié sous la forme d'une expression rationnelle.</li>
211 <p>Le second argument (<em>regex</em>) est une <glossary
212 ref="regex">expression rationnelle</glossary>. Si <em>regex</em>
213 correspond à l'<em>attribut</em>, les arguments suivants sont évalués.</p>
215 <p>Le reste des arguments constitue les noms des variables à définir,
216 ainsi que les valeurs optionnelles qui doivent leur être affectées. Ils
217 peuvent se présenter sous les formes suivantes :</p>
220 <li><code><em>nom-variable</em></code>, ou</li>
222 <li><code>!<em>nom-variable</em></code>, ou</li>
224 <li><code><em>nom-variable</em>=<em>valeur</em></code></li>
227 <p>Dans la première forme, la valeur sera définie à "1". Dans la
228 seconde forme, la variable sera supprimée si elle a été définie au
229 préalable, et dans la troisième forme, la variable sera définie à la
230 valeur littérale spécifiée par <code><em>valeur</em></code>. Depuis
231 la version 2.0.51, Apache httpd reconnaît les occurrences de variables
232 <code>$1</code>..<code>$9</code> à l'intérieur de
233 <code><em>valeur</em></code>, et les remplace par les
234 sous-expressions entre parenthèses correspondantes de
235 <var>regex</var>. <code>$0</code> permet d'accéder à l'ensemble de la chaîne
236 qui correspond à ce modèle.</p>
238 <highlight language="config">
239 SetEnvIf Request_URI "\.gif$" object_is_image=gif
240 SetEnvIf Request_URI "\.jpg$" object_is_image=jpg
241 SetEnvIf Request_URI "\.xbm$" object_is_image=xbm
243 SetEnvIf Referer www\.mydomain\.example\.com intra_site_referral
245 SetEnvIf object_is_image xbm XBIT_PROCESSING=1
247 SetEnvIf Request_URI "\.(.*)$" EXTENSION=$1
249 SetEnvIf ^TS ^[a-z] HAVE_TS
252 <p>Les trois premières lignes définissent la variable
253 d'environnement <code>objet_est_une_image</code> si l'objet de la
254 requête est un fichier image, et la quatrième définit la variable
255 <code>intra_site_referral</code> si la page référante se trouve
256 quelque part dans le site web
257 <code>www.mydomain.example.com</code>.</p>
259 <p>La dernière ligne définit la variable d'environnement
260 <code>HAVE_TS</code> si la requête contient un en-tête dont le nom
261 commence par "TS" et dont la valeur commence par tout caractère du
265 <seealso><a href="../env.html">Les variables d'environnement et le
266 serveur HTTP Apache</a> pour des exemples supplémentaires.
272 <name>SetEnvIfExpr</name>
273 <description>Définit des variables d'environnement en fonction d'une expression ap_expr</description>
274 <syntax>SetEnvIfExpr <em>expr
275 [!]env-variable</em>[=<em>valeur</em>]
276 [[!]<em>env-variable</em>[=<em>valeur</em>]] ...</syntax>
277 <contextlist><context>server config</context>
278 <context>virtual host</context><context>directory</context>
279 <context>.htaccess</context></contextlist>
280 <override>FileInfo</override>
283 <p>La directive <directive>SetEnvIfExpr</directive> permet de
284 définir des variables d'environnement en fonction d'une expression
285 <directive module="core" type="section">If</directive> <code>ap_expr</code>. Cette
286 expression est évaluée à l'exécution, et utilise les variables
287 d'environnement <em>env-variable</em> de la même manière que la
288 directive <directive>SetEnvIf</directive>.</p>
290 <highlight language="config">
291 SetEnvIfExpr "tolower(req('X-Sendfile')) == 'd:\images\very_big.iso')" iso_delivered
294 <p>Dans cet exemple, la variable d'environnement
295 <code>iso_delivered</code> est définie chaque fois que notre
296 application tente de l'envoyer via <code>X-Sendfile</code>.</p>
298 <p>Il pourrait être plus utile de définir une variable rfc1918 si
299 l'adresse IP distante est une adresse privée au sens de la RFC 1918
302 <highlight language="config">
303 SetEnvIfExpr "-R '10.0.0.0/8' || -R '172.16.0.0/12' || -R '192.168.0.0/16'" rfc1918
307 <seealso><a href="../expr.html">Les expressions dans le serveur HTTP
308 Apache</a>, pour une référence complète et davantage d'exemples.</seealso>
309 <seealso>La directive <directive module="core"
310 type="section">If</directive> permet d'obtenir des résultats
311 similaires.</seealso>
312 <seealso><module>mod_filter</module></seealso>
316 <name>SetEnvIfNoCase</name>
317 <description>Définit des variables d'environnement en fonction des
318 attributs de la requête sans tenir compte de la casse</description>
319 <syntax>SetEnvIfNoCase <em>attribut regex
320 [!]env-variable</em>[=<em>valeur</em>]
321 [[!]<em>env-variable</em>[=<em>valeur</em>]] ...</syntax>
322 <contextlist><context>server config</context>
323 <context>virtual host</context><context>directory</context>
324 <context>.htaccess</context></contextlist>
325 <override>FileInfo</override>
329 <p>La directive <directive>SetEnvIfNoCase</directive> est identique
330 d'un point de vue sémantique à la directive <directive
331 module="mod_setenvif">SetEnvIf</directive>, et ne s'en distingue que
332 par le fait que la comparaison des expressions rationnelles est
333 effectuée sans tenir compte de la casse. Par exemple :</p>
334 <highlight language="config">
335 SetEnvIfNoCase Host Example\.Org site=example
338 <p>Cette ligne va définir la variable d'environnement
339 <code>site</code> avec la valeur "<code>example</code>" si le champ
340 d'en-tête de requête HTTP <code>Host:</code> est présent et contient
341 <code>Example.Org</code>, <code>example.org</code>, ou une autre
342 combinaison des mêmes caractères, sans tenir compte de la casse.</p>