2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision : 1479264 -->
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 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 en fonction du fait que telle ou telle
38 caractéristique de la requête correspond ou non aux expressions
39 rationnelles que vous spécifiez. Ces variables d'environnement
40 peuvent être utilisées par d'autres parties du serveur pour prendre
41 des décisions quant aux actions à entreprendre, et pour déterminer
42 si les scripts CGI et les pages SSI doivent pouvoir y accéder.</p>
44 <p>Les directives sont interprétées selon l'ordre dans lequel elles
45 apparaîssent dans les fichiers de configuration. Ainsi, des
46 séquences plus complexes peuvent être utilisées, comme dans cet
47 exemple qui définit netscape si le navigateur est Mozilla et non
50 <highlight language="config">
51 BrowserMatch ^Mozilla netscape
52 BrowserMatch MSIE !netscape
56 <seealso><a href="../env.html">Les variables d'environnement et le
57 serveur HTTP Apache</a></seealso>
60 <name>BrowserMatch</name>
61 <description>Définit des variables d'environnement en fonction du
62 contenu de l'en-tête HTTP User-Agent</description>
63 <syntax>BrowserMatch <em>regex [!]env-variable</em>[=<em>valeur</em>]
64 [[!]<em>env-variable</em>[=<em>valeur</em>]] ...</syntax>
65 <contextlist><context>server config</context>
66 <context>virtual host</context><context>directory</context>
67 <context>.htaccess</context></contextlist>
68 <override>FileInfo</override>
71 <p>La directive <directive>BrowserMatch</directive> est un cas
72 particulier de la directive <directive
73 module="mod_setenvif">SetEnvIf</directive>, qui définit des variables
74 d'environnement en fonction du contenu de l'en-tête de requête HTTP
75 <code>User-Agent</code>. Les deux lignes suivantes produisent le même
77 <highlight language="config">
78 BrowserMatchNoCase Robot is_a_robot
79 SetEnvIfNoCase User-Agent Robot is_a_robot
82 <p>Quelques exemples supplémentaires :</p>
83 <highlight language="config">
84 BrowserMatch ^Mozilla forms jpeg=yes browser=netscape
85 BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript
86 BrowserMatch MSIE !javascript
92 <name>BrowserMatchNoCase</name>
93 <description>Définit des variables d'environnement en fonction du
94 contenu de l'en-tête HTTP User-Agent sans tenir compte de la
96 <syntax>BrowserMatchNoCase <em>regex [!]env-variable</em>[=<em>valeur</em>]
97 [[!]<em>env-variable</em>[=<em>valeur</em>]] ...</syntax>
98 <contextlist><context>server config</context>
99 <context>virtual host</context><context>directory</context>
100 <context>.htaccess</context></contextlist>
101 <override>FileInfo</override>
105 <p>La directive <directive>BrowserMatchNoCase</directive> est
106 identique sur le plan sémantique à la directive <directive
107 module="mod_setenvif">BrowserMatch</directive>. Elle permet
108 cependant une comparaison insensible à la casse. Par exemple :</p>
109 <highlight language="config">
110 BrowserMatchNoCase mac platform=macintosh
111 BrowserMatchNoCase win platform=windows
114 <p>Les directives <directive>BrowserMatch</directive> et
115 <directive>BrowserMatchNoCase</directive> sont des cas particuliers
116 des directives <directive module="mod_setenvif">SetEnvIf</directive>
117 et <directive module="mod_setenvif">SetEnvIfNoCase</directive>.
118 Ainsi, les deux lignes suivantes produisent le même effet :</p>
119 <highlight language="config">
120 BrowserMatchNoCase Robot is_a_robot
121 SetEnvIfNoCase User-Agent Robot is_a_robot
127 <name>SetEnvIf</name>
128 <description>Définit des variables d'environnement en fonction des
129 attributs de la requête</description>
130 <syntax>SetEnvIf <em>attribut
131 regex [!]env-variable</em>[=<em>valeur</em>]
132 [[!]<em>env-variable</em>[=<em>valeur</em>]] ...</syntax>
133 <contextlist><context>server config</context>
134 <context>virtual host</context><context>directory</context>
135 <context>.htaccess</context></contextlist>
136 <override>FileInfo</override>
139 <p>La directive <directive>SetEnvIf</directive> permet de définir
140 des variables d'environnement en fonction des attributs de la
141 requête. L'<em>attribut</em> spécifié comme premier argument peut
142 se présenter sous l'une des quatre formes suivantes :</p>
145 <li>Un champ d'en-tête de requête HTTP (voir la <a
146 href="http://www.rfc-editor.org/rfc/rfc2616.txt">RFC2616</a> pour
147 plus d'information à leur propos) ; par exemple : <code>Host</code>,
148 <code>User-Agent</code>, <code>Referer</code>, ou
149 <code>Accept-Language</code>. Il est possible d'utiliser une
150 expression rationnelle pour spécifier un jeu d'en-têtes de
153 <li>Une des caractéristiques de la requête suivantes :
155 <li><code>Remote_Host</code> - le nom d'hôte (s'il est disponible)
156 du client qui effectue la requête</li>
158 <li><code>Remote_Addr</code> - l'adresse IP du client qui effectue
159 la requête</li>
161 <li><code>Server_Addr</code> - l'adresse IP du serveur qui a reçu
162 la requête (uniquement à partir des versions supérieures à
165 <li><code>Request_Method</code> - Le nom de la méthode HTTP
166 utilisée (<code>GET</code>, <code>POST</code>, <em>et
169 <li><code>Request_Protocol</code> - le nom et la version du
170 protocole utilisé pour la requête (par exemple "HTTP/0.9",
171 "HTTP/1.1", <em>etc...</em>)</li>
173 <li><code>Request_URI</code> - la ressource demandée dans la ligne
174 de requête HTTP -- en général la partie de l'URL suivant le
175 protocole et le nom du serveur, sans la chaîne d'arguments. Voir
176 la directive <directive
177 module="mod_rewrite">RewriteCond</directive> du module
178 <module>mod_rewrite</module> pour plus d'informations sur la
179 manière de mettre en correspondance votre chaîne d'arguments.</li>
183 <li>Le nom d'une variable d'environnement parmi la liste de celles qui
184 sont associées à la requête. Ceci permet à la directive
185 <directive>SetEnvIf</directive> d'effectuer des tests en fonction du
186 résultat de comparaisons précédentes. Seules les variables
187 d'environnement définies par des directives
188 <code>SetEnvIf[NoCase]</code> précédentes sont disponibles pour
189 effectuer des tests de cette manière. 'Précédentes' signifie qu'elles se
190 trouvent à un niveau plus global de la configuration (par exemple au
191 niveau du serveur principal), ou plus haut chronologiquement dans le
192 contexte de la directive. Les variables d'environnement ne seront prises
193 en compte que si aucune correspondance n'a été trouvée parmi les
194 caractéristiques de la requête, et si <em>attribut</em> n'a pas été
195 spécifié sous la forme d'une expression rationnelle.</li>
199 <p>Le second argument (<em>regex</em>) est une <glossary
200 ref="regex">expression rationnelle</glossary>. Si <em>regex</em>
201 correspond à l'<em>attribut</em>, les arguments suivants sont évalués.</p>
203 <p>Le reste des arguments constitue les noms des variables à définir,
204 ainsi que les valeurs optionnelles qui doivent leur être affectées. Ils
205 peuvent se présenter sous les formes suivantes :</p>
208 <li><code><em>nom-variable</em></code>, or</li>
210 <li><code>!<em>nom-variable</em></code>, or</li>
212 <li><code><em>nom-variable</em>=<em>valeur</em></code></li>
215 <p>Dans la première forme, la valeur sera définie à "1". Dans la
216 seconde forme, la variable sera supprimée si elle a été définie au
217 préalable, et dans la troisième forme, la variable sera définie à la
218 valeur littérale spécifiée par <code><em>valeur</em></code>. Depuis
219 la version 2.0.51, Apache httpd reconnaît les occurrences de variables
220 <code>$1</code>..<code>$9</code> à l'intérieur de
221 <code><em>valeur</em></code>, et les remplace par les
222 sous-expressions entre parenthèses correspondantes de
223 <var>regex</var>.</p>
225 <highlight language="config">
226 SetEnvIf Request_URI "\.gif$" object_is_image=gif
227 SetEnvIf Request_URI "\.jpg$" object_is_image=jpg
228 SetEnvIf Request_URI "\.xbm$" object_is_image=xbm
230 SetEnvIf Referer www\.mydomain\.example\.com intra_site_referral
232 SetEnvIf object_is_image xbm XBIT_PROCESSING=1
234 SetEnvIf ^TS ^[a-z] HAVE_TS
237 <p>Les trois premières lignes définissent la variable
238 d'environnement <code>objet_est_une_image</code> si l'objet de la
239 requête est un fichier image, et la quatrième définit la variable
240 <code>référant_intra_site</code> si la page référante se trouve
241 quelque part dans le site web
242 <code>www.mon-domaine.example.com</code>.</p>
244 <p>La dernière ligne définit la variable d'environnement
245 <code>HAVE_TS</code> si la requête contient un en-tête dont le nom
246 commence par "TS" et dont la valeur commence par tout caractère du
250 <seealso><a href="../env.html">Les variables d'environnement et le
251 serveur HTTP Apache</a> pour des exemples supplémentaires.
257 <name>SetEnvIfExpr</name>
258 <description>Définit des variables d'environnement en fonction d'une expression ap_expr</description>
259 <syntax>SetEnvIfExpr <em>expr
260 [!]env-variable</em>[=<em>valeur</em>]
261 [[!]<em>env-variable</em>[=<em>valeur</em>]] ...</syntax>
262 <contextlist><context>server config</context>
263 <context>virtual host</context><context>directory</context>
264 <context>.htaccess</context></contextlist>
265 <override>FileInfo</override>
268 <p>La directive <directive>SetEnvIfExpr</directive> permet de
269 définir des variables d'environnement en fonction d'une expression
270 <directive type="section">If</directive> <code>ap_expr</code>. Cette
271 expression est évaluée à l'exécution, et utilise les variables
272 d'environnement <em>env-variable</em> de la même manière que la
273 directive <directive>SetEnvIf</directive>.</p>
275 <highlight language="config">
276 SetEnvIfExpr "tolower(req('X-Sendfile')) == 'd:\images\very_big.iso')" iso_delivered
279 <p>Dans cet exemple, la variable d'environnement
280 <code>iso_delivered</code> est définie chaque fois que notre
281 application tente de l'envoyer via <code>X-Sendfile</code>.</p>
283 <p>Il pourrait être plus utile de définir une variable rfc1918 si
284 l'adresse IP distante est une adresse privée au sens de la RFC 1918
287 <highlight language="config">
288 SetEnvIfExpr "-R '10.0.0.0/8' || -R '172.16.0.0/12' || -R '192.168.0.0/16'" rfc1918
292 <seealso><a href="../expr.html">Les expressions dans le serveur HTTP
293 Apache</a>, pour une référence complète et davantage d'exemples.</seealso>
294 <seealso>La directive <directive type="section">If</directive> peut être
295 utilisée pour obtenir des résultats similaires.</seealso>
296 <seealso><module>mod_filter</module></seealso>
300 <name>SetEnvIfNoCase</name>
301 <description>Définit des variables d'environnement en fonction des
302 attributs de la requête sans tenir compte de la casse</description>
303 <syntax>SetEnvIfNoCase <em>attribut regex
304 [!]env-variable</em>[=<em>valeur</em>]
305 [[!]<em>env-variable</em>[=<em>valeur</em>]] ...</syntax>
306 <contextlist><context>server config</context>
307 <context>virtual host</context><context>directory</context>
308 <context>.htaccess</context></contextlist>
309 <override>FileInfo</override>
313 <p>La directive <directive>SetEnvIfNoCase</directive> est identique
314 d'un point de vue sémantique à la directive <directive
315 module="mod_setenvif">SetEnvIf</directive>, et ne s'en distingue que
316 par le fait que la comparaison des expressions rationnelles est
317 effectuée sans tenir compte de la casse. Par exemple :</p>
318 <highlight language="config">
319 SetEnvIfNoCase Host Example\.Org site=apache
322 <p>Cette ligne va définir la variable d'environnement
323 <code>site</code> avec la valeur "<code>example</code>" si le champ
324 d'en-tête de requête HTTP <code>Host:</code> est présent et contient
325 <code>Example.Org</code>, <code>example.org</code>, ou une autre
326 combinaison des mêmes caractères, sans tenir compte de la casse.</p>