]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_setenvif.xml.fr
Merge in APR[-util] macros from branches/trunk-buildconf-noapr
[apache] / docs / manual / mod / mod_setenvif.xml.fr
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 -->
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éfinir des variables d'environnement en fonction
29 de certaines caractéristiques de la requê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é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>
42
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
47     MSIE.</p>
48
49 <highlight language="config">
50 BrowserMatch ^Mozilla netscape
51 BrowserMatch MSIE !netscape
52 </highlight>
53
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>
65
66 </summary>
67
68 <seealso><a href="../env.html">Les variables d'environnement et le
69 serveur HTTP Apache</a></seealso>
70
71 <directivesynopsis>
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>
81
82 <usage>
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
88   effet :</p>
89 <highlight language="config">
90 BrowserMatch Robot is_a_robot
91 SetEnvIf User-Agent Robot is_a_robot
92 </highlight>
93
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
99 </highlight>
100 </usage>
101 </directivesynopsis>
102
103 <directivesynopsis>
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
107 casse</description>
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>
114
115 <usage>
116
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
124 </highlight>
125
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
134 </highlight>
135 </usage>
136 </directivesynopsis>
137
138 <directivesynopsis>
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>
149
150 <usage>
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>
155
156 <ol>
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
163     requête.</li>
164
165 <li>Une des caractéristiques de la requête suivantes :
166     <ul>
167       <li><code>Remote_Host</code> - le nom d'hôte (s'il est disponible)
168       du client qui effectue la requête</li>
169
170       <li><code>Remote_Addr</code> - l'adresse IP du client qui effectue
171       la requête</li>
172
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 à
175       2.0.43)</li>
176
177       <li><code>Request_Method</code> - Le nom de la méthode HTTP
178       utilisée (<code>GET</code>, <code>POST</code>, <em>et
179       cetera...</em>)</li>
180
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>
184
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>
192     </ul>
193 </li>
194
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>
208
209 </ol>
210
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>
214
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>
218
219     <ol>
220       <li><code><em>nom-variable</em></code>, ou</li>
221
222       <li><code>!<em>nom-variable</em></code>, ou</li>
223
224       <li><code><em>nom-variable</em>=<em>valeur</em></code></li>
225     </ol>
226
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>
237
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
242     
243 SetEnvIf Referer www\.mydomain\.example\.com intra_site_referral
244     
245 SetEnvIf object_is_image xbm XBIT_PROCESSING=1
246
247 SetEnvIf Request_URI "\.(.*)$" EXTENSION=$1
248     
249 SetEnvIf ^TS  ^[a-z]  HAVE_TS
250 </highlight>
251
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>
258
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
262     jeu [a-z].</p>
263 </usage>
264
265 <seealso><a href="../env.html">Les variables d'environnement et le
266 serveur HTTP Apache</a> pour des exemples supplémentaires.
267 </seealso>
268 </directivesynopsis>
269
270 <directivesynopsis>
271
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>
281
282 <usage>
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>
289
290 <highlight language="config">
291     SetEnvIfExpr "tolower(req('X-Sendfile')) == 'd:\images\very_big.iso')" iso_delivered
292 </highlight>
293
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>
297
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
300     :</p>
301
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
304 </highlight>
305 </usage>
306
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>
313 </directivesynopsis>
314
315 <directivesynopsis>
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>
326
327 <usage>
328
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
336 </highlight>
337
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>
343 </usage>
344 </directivesynopsis>
345 </modulesynopsis>