]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_setenvif.xml.fr
xforms
[apache] / docs / manual / mod / mod_setenvif.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 : 1479264 -->
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_setenvif.xml.meta">
26
27 <name>mod_setenvif</name>
28 <description>Permet de d&eacute;finir des variables d'environnement en fonction
29 de caract&eacute;ristiques de la requ&ecirc;te</description>
30 <status>Base</status>
31 <sourcefile>mod_setenvif.c</sourcefile>
32 <identifier>setenvif_module</identifier>
33
34 <summary>
35
36     <p>Le module <module>mod_setenvif</module> vous permet de d&eacute;finir
37     des variables d'environnement internes en fonction du fait que telle ou telle
38     caract&eacute;ristique de la requ&ecirc;te correspond ou non aux expressions
39     rationnelles que vous sp&eacute;cifiez. Ces variables d'environnement
40     peuvent &ecirc;tre utilis&eacute;es par d'autres parties du serveur pour prendre
41     des d&eacute;cisions quant aux actions &agrave; entreprendre, et pour d&eacute;terminer
42     si les scripts CGI et les pages SSI doivent pouvoir y acc&eacute;der.</p>
43
44     <p>Les directives sont interpr&eacute;t&eacute;es selon l'ordre dans lequel elles
45     appara&icirc;ssent dans les fichiers de configuration. Ainsi, des
46     s&eacute;quences plus complexes peuvent &ecirc;tre utilis&eacute;es, comme dans cet
47     exemple qui d&eacute;finit netscape si le navigateur est Mozilla et non
48     MSIE.</p>
49
50 <highlight language="config">
51 BrowserMatch ^Mozilla netscape
52 BrowserMatch MSIE !netscape
53 </highlight>
54 </summary>
55
56 <seealso><a href="../env.html">Les variables d'environnement et le
57 serveur HTTP Apache</a></seealso>
58
59 <directivesynopsis>
60 <name>BrowserMatch</name>
61 <description>D&eacute;finit des variables d'environnement en fonction du
62 contenu de l'en-t&ecirc;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>
69
70 <usage>
71   <p>La directive <directive>BrowserMatch</directive> est un cas
72   particulier de la directive <directive
73   module="mod_setenvif">SetEnvIf</directive>, qui d&eacute;finit des variables
74   d'environnement en fonction du contenu de l'en-t&ecirc;te de requ&ecirc;te HTTP
75   <code>User-Agent</code>. Les deux lignes suivantes produisent le m&ecirc;me
76   effet :</p>
77 <highlight language="config">
78 BrowserMatchNoCase Robot is_a_robot
79 SetEnvIfNoCase User-Agent Robot is_a_robot
80 </highlight>
81
82     <p>Quelques exemples suppl&eacute;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
87 </highlight>
88 </usage>
89 </directivesynopsis>
90
91 <directivesynopsis>
92 <name>BrowserMatchNoCase</name>
93 <description>D&eacute;finit des variables d'environnement en fonction du
94 contenu de l'en-t&ecirc;te HTTP User-Agent sans tenir compte de la
95 casse</description>
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>
102
103 <usage>
104
105     <p>La directive <directive>BrowserMatchNoCase</directive> est
106     identique sur le plan s&eacute;mantique &agrave; la directive <directive
107     module="mod_setenvif">BrowserMatch</directive>. Elle permet
108     cependant une comparaison insensible &agrave; la casse. Par exemple :</p>
109 <highlight language="config">
110 BrowserMatchNoCase mac platform=macintosh
111 BrowserMatchNoCase win platform=windows
112 </highlight>
113
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&ecirc;me effet :</p>
119 <highlight language="config">
120 BrowserMatchNoCase Robot is_a_robot
121 SetEnvIfNoCase User-Agent Robot is_a_robot
122 </highlight>
123 </usage>
124 </directivesynopsis>
125
126 <directivesynopsis>
127 <name>SetEnvIf</name>
128 <description>D&eacute;finit des variables d'environnement en fonction des
129 attributs de la requ&ecirc;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>
137
138 <usage>
139     <p>La directive <directive>SetEnvIf</directive> permet de d&eacute;finir
140     des variables d'environnement en fonction des attributs de la
141     requ&ecirc;te. L'<em>attribut</em> sp&eacute;cifi&eacute; comme premier argument peut
142     se pr&eacute;senter sous l'une des quatre formes suivantes :</p>
143
144 <ol>
145 <li>Un champ d'en-t&ecirc;te de requ&ecirc;te HTTP (voir la <a
146     href="http://www.rfc-editor.org/rfc/rfc2616.txt">RFC2616</a> pour
147     plus d'information &agrave; 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&eacute;cifier un jeu d'en-t&ecirc;tes de
151     requ&ecirc;te.</li>
152
153 <li>Une des caract&eacute;ristiques de la requ&ecirc;te suivantes :
154     <ul>
155       <li><code>Remote_Host</code> - le nom d'h&ocirc;te (s'il est disponible)
156       du client qui effectue la requ&ecirc;te</li>
157
158       <li><code>Remote_Addr</code> - l'adresse IP du client qui effectue
159       la requ&ecirc;te</li>
160
161       <li><code>Server_Addr</code> - l'adresse IP du serveur qui a re&ccedil;u
162       la requ&ecirc;te (uniquement &agrave; partir des versions sup&eacute;rieures &agrave;
163       2.0.43)</li>
164
165       <li><code>Request_Method</code> - Le nom de la m&eacute;thode HTTP
166       utilis&eacute;e (<code>GET</code>, <code>POST</code>, <em>et
167       cetera...</em>)</li>
168
169       <li><code>Request_Protocol</code> - le nom et la version du
170       protocole utilis&eacute; pour la requ&ecirc;te (par exemple "HTTP/0.9",
171       "HTTP/1.1", <em>etc...</em>)</li>
172
173       <li><code>Request_URI</code> - la ressource demand&eacute;e dans la ligne
174       de requ&ecirc;te HTTP -- en g&eacute;n&eacute;ral la partie de l'URL suivant le
175       protocole et le nom du serveur, sans la cha&icirc;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&egrave;re de mettre en correspondance votre cha&icirc;ne d'arguments.</li>
180     </ul>
181 </li>
182
183 <li>Le nom d'une variable d'environnement parmi la liste de celles qui
184 sont associ&eacute;es &agrave; la requ&ecirc;te. Ceci permet &agrave; la directive
185 <directive>SetEnvIf</directive> d'effectuer des tests en fonction du
186 r&eacute;sultat de comparaisons pr&eacute;c&eacute;dentes. Seules les variables
187 d'environnement d&eacute;finies par des directives
188 <code>SetEnvIf[NoCase]</code> pr&eacute;c&eacute;dentes sont disponibles pour
189 effectuer des tests de cette mani&egrave;re. 'Pr&eacute;c&eacute;dentes' signifie qu'elles se
190 trouvent &agrave; 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 &eacute;t&eacute; trouv&eacute;e parmi les
194 caract&eacute;ristiques de la requ&ecirc;te, et si <em>attribut</em> n'a pas &eacute;t&eacute;
195 sp&eacute;cifi&eacute; sous la forme d'une expression rationnelle.</li>
196
197 </ol>
198
199 <p>Le second argument (<em>regex</em>) est une <glossary
200 ref="regex">expression rationnelle</glossary>. Si  <em>regex</em>
201 correspond &agrave; l'<em>attribut</em>, les arguments suivants sont &eacute;valu&eacute;s.</p>
202
203 <p>Le reste des arguments constitue les noms des variables &agrave; d&eacute;finir,
204 ainsi que les valeurs optionnelles qui doivent leur &ecirc;tre affect&eacute;es. Ils
205 peuvent se pr&eacute;senter sous les formes suivantes :</p>
206
207     <ol>
208       <li><code><em>nom-variable</em></code>, or</li>
209
210       <li><code>!<em>nom-variable</em></code>, or</li>
211
212       <li><code><em>nom-variable</em>=<em>valeur</em></code></li>
213     </ol>
214
215     <p>Dans la premi&egrave;re forme, la valeur sera d&eacute;finie &agrave; "1". Dans la
216     seconde forme, la variable sera supprim&eacute;e si elle a &eacute;t&eacute; d&eacute;finie au
217     pr&eacute;alable, et dans la troisi&egrave;me forme, la variable sera d&eacute;finie &agrave; la
218     valeur litt&eacute;rale sp&eacute;cifi&eacute;e par <code><em>valeur</em></code>. Depuis
219     la version 2.0.51, Apache httpd reconna&icirc;t les occurrences de variables
220     <code>$1</code>..<code>$9</code> &agrave; l'int&eacute;rieur de
221     <code><em>valeur</em></code>, et les remplace par les
222     sous-expressions entre parenth&egrave;ses correspondantes de
223     <var>regex</var>.</p>
224
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
229     
230 SetEnvIf Referer www\.mydomain\.example\.com intra_site_referral
231     
232 SetEnvIf object_is_image xbm XBIT_PROCESSING=1
233     
234 SetEnvIf ^TS  ^[a-z]  HAVE_TS
235 </highlight>
236
237     <p>Les trois premi&egrave;res lignes d&eacute;finissent la variable
238     d'environnement <code>objet_est_une_image</code> si l'objet de la
239     requ&ecirc;te est un fichier image, et la quatri&egrave;me d&eacute;finit la variable
240     <code>r&eacute;f&eacute;rant_intra_site</code> si la page r&eacute;f&eacute;rante se trouve
241     quelque part dans le site web
242     <code>www.mon-domaine.example.com</code>.</p>
243
244     <p>La derni&egrave;re ligne d&eacute;finit la variable d'environnement
245     <code>HAVE_TS</code> si la requ&ecirc;te contient un en-t&ecirc;te dont le nom
246     commence par "TS" et dont la valeur commence par tout caract&egrave;re du
247     jeu [a-z].</p>
248 </usage>
249
250 <seealso><a href="../env.html">Les variables d'environnement et le
251 serveur HTTP Apache</a> pour des exemples suppl&eacute;mentaires.
252 </seealso>
253 </directivesynopsis>
254
255 <directivesynopsis>
256
257 <name>SetEnvIfExpr</name>
258 <description>D&eacute;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>
266
267 <usage>
268     <p>La directive <directive>SetEnvIfExpr</directive> permet de
269     d&eacute;finir des variables d'environnement en fonction d'une expression
270     <directive type="section">If</directive> <code>ap_expr</code>. Cette
271     expression est &eacute;valu&eacute;e &agrave; l'ex&eacute;cution, et utilise les variables
272     d'environnement <em>env-variable</em> de la m&ecirc;me mani&egrave;re que la
273     directive <directive>SetEnvIf</directive>.</p>
274
275 <highlight language="config">
276     SetEnvIfExpr "tolower(req('X-Sendfile')) == 'd:\images\very_big.iso')" iso_delivered
277 </highlight>
278
279     <p>Dans cet exemple, la variable d'environnement
280     <code>iso_delivered</code> est d&eacute;finie chaque fois que notre
281     application tente de l'envoyer via <code>X-Sendfile</code>.</p>
282
283     <p>Il pourrait &ecirc;tre plus utile de d&eacute;finir une variable rfc1918 si
284     l'adresse IP distante est une adresse priv&eacute;e au sens de la RFC 1918
285     :</p>
286
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
289 </highlight>
290 </usage>
291
292 <seealso><a href="../expr.html">Les expressions dans le serveur HTTP
293 Apache</a>, pour une r&eacute;f&eacute;rence compl&egrave;te et davantage d'exemples.</seealso>
294 <seealso>La directive <directive type="section">If</directive> peut &ecirc;tre
295 utilis&eacute;e pour obtenir des r&eacute;sultats similaires.</seealso>
296 <seealso><module>mod_filter</module></seealso>
297 </directivesynopsis>
298
299 <directivesynopsis>
300 <name>SetEnvIfNoCase</name>
301 <description>D&eacute;finit des variables d'environnement en fonction des
302 attributs de la requ&ecirc;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>
310
311 <usage>
312
313     <p>La directive <directive>SetEnvIfNoCase</directive> est identique
314     d'un point de vue s&eacute;mantique &agrave; 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&eacute;e sans tenir compte de la casse. Par exemple :</p>
318 <highlight language="config">
319    SetEnvIfNoCase Host Example\.Org site=apache
320 </highlight>
321
322     <p>Cette ligne va d&eacute;finir la variable d'environnement
323     <code>site</code> avec la valeur "<code>example</code>" si le champ
324     d'en-t&ecirc;te de requ&ecirc;te HTTP <code>Host:</code> est pr&eacute;sent et contient
325     <code>Example.Org</code>, <code>example.org</code>, ou une autre
326     combinaison des m&ecirc;mes caract&egrave;res, sans tenir compte de la casse.</p>
327 </usage>
328 </directivesynopsis>
329 </modulesynopsis>