]> granicus.if.org Git - apache/blob - docs/manual/expr.xml.fr
xforms
[apache] / docs / manual / expr.xml.fr
1 <?xml version="1.0" encoding="ISO-8859-1" ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
4 <!-- English Revision : 1362526 -->
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 <manualpage metafile="expr.xml.meta">
26
27   <title>Les expressions dans le serveur HTTP Apache</title>
28
29   <summary>
30     <p>Historiquement, il existe de nombreuses variantes dans la syntaxe
31     des expressions permettant d'exprimer une condition dans les
32     diff&eacute;rents modules du serveur HTTP Apache. &Agrave; ce titre, des travaux sont
33     en cours pour n'utiliser qu'une seule variante nomm&eacute;e
34     <em>ap_expr</em>, pour toutes les directives de configuration. Ce
35     document d&eacute;crit l'interpr&eacute;teur d'expressions <em>ap_expr</em>.
36     </p>
37     <p>Le type d'expression <em>ap_expr</em> est appel&eacute; &agrave; remplacer la
38     plupart des autres types d'expressions dans HTTPD. Par exemple, la
39     directive obsol&egrave;te <directive
40     module="mod_ssl">SSLRequire</directive> peut &ecirc;tre remplac&eacute;e par la
41     directive <a href="mod/mod_authz_core.html#reqexpr">Require
42     expr</a>.
43     </p>
44   </summary>
45
46 <seealso><directive module="core">If</directive></seealso>
47 <seealso><directive module="core" type="section">If</directive></seealso>
48 <seealso><directive module="core" type="section">ElseIf</directive></seealso>
49 <seealso><directive module="core" type="section">Else</directive></seealso>
50 <seealso><directive module="mod_rewrite">RewriteCond</directive></seealso>
51 <seealso><directive module="mod_setenvif">SetEnvIfExpr</directive></seealso>
52 <seealso><directive module="mod_headers">Header</directive></seealso>
53 <seealso><directive module="mod_headers">RequestHeader</directive></seealso>
54 <seealso><directive module="mod_filter">FilterProvider</directive></seealso>
55 <seealso><a href="mod/mod_authz_core.html#reqexpr">Require expr</a></seealso>
56 <seealso><directive module="mod_ssl">SSLRequire</directive></seealso>
57 <seealso><directive module="mod_log_debug">LogMessage</directive></seealso>
58 <seealso><module>mod_include</module></seealso>
59
60   <section id="grammar">
61     <title>Syntaxe en Forme de Backus-Naur</title>
62       <p>La <a href="http://fr.wikipedia.org/wiki/Forme_de_Backus-Naur">Forme de Backus-Naur</a>
63       (souvent abr&eacute;g&eacute;e en BNF, de l'anglais Backus-Naur Form) est une notation permettant de d&eacute;crire
64       les r&egrave;gles syntaxiques des langages de programmation.
65       </p>
66 <blockquote>
67 <pre>
68 expr        ::= "<strong>true</strong>" | "<strong>false</strong>"
69               | "<strong>!</strong>" expr
70               | expr "<strong>&amp;&amp;</strong>" expr
71               | expr "<strong>||</strong>" expr
72               | "<strong>(</strong>" expr "<strong>)</strong>"
73               | comp
74
75 comp        ::= stringcomp
76               | integercomp
77               | unaryop word
78               | word binaryop word
79               | word "<strong>in</strong>" "<strong>{</strong>" wordlist "<strong>}</strong>"
80               | word "<strong>in</strong>" listfunction
81               | word "<strong>=~</strong>" regex
82               | word "<strong>!~</strong>" regex
83
84
85 stringcomp  ::= word "<strong>==</strong>" word
86               | word "<strong>!=</strong>" word
87               | word "<strong>&lt;</strong>"  word
88               | word "<strong>&lt;=</strong>" word
89               | word "<strong>&gt;</strong>"  word
90               | word "<strong>&gt;=</strong>" word
91
92 integercomp ::= word "<strong>-eq</strong>" word | word "<strong>eq</strong>" word
93               | word "<strong>-ne</strong>" word | word "<strong>ne</strong>" word
94               | word "<strong>-lt</strong>" word | word "<strong>lt</strong>" word
95               | word "<strong>-le</strong>" word | word "<strong>le</strong>" word
96               | word "<strong>-gt</strong>" word | word "<strong>gt</strong>" word
97               | word "<strong>-ge</strong>" word | word "<strong>ge</strong>" word
98
99 wordlist    ::= word
100               | wordlist "<strong>,</strong>" word
101
102 word        ::= word "<strong>.</strong>" word
103               | digit
104               | "<strong>'</strong>" string "<strong>'</strong>"
105               | "<strong>"</strong>" string "<strong>"</strong>"
106               | variable
107               | rebackref
108               | function
109
110 string      ::= stringpart
111               | string stringpart
112
113 stringpart  ::= cstring
114               | variable
115               | rebackref
116
117 cstring     ::= ...
118 digit       ::= [0-9]+
119
120 variable    ::= "<strong>%{</strong>" varname "<strong>}</strong>"
121               | "<strong>%{</strong>" funcname "<strong>:</strong>" funcargs "<strong>}</strong>"
122
123 rebackref   ::= "<strong>$</strong>" [0-9]
124
125 function     ::= funcname "<strong>(</strong>" word "<strong>)</strong>"
126
127 listfunction ::= listfuncname "<strong>(</strong>" word "<strong>)</strong>"
128 </pre>
129 </blockquote>
130
131 </section>
132
133 <section id="vars">
134     <title>Variables</title>
135
136     <p>L'interpr&eacute;teur d'expressions fournit plusieurs variables de la
137     forme <code>%{HTTP_HOST}</code>. Notez que la valeur d'une variable
138     peut d&eacute;pendre de la phase du traitement de la requ&ecirc;te au cours de
139     laquelle elle est &eacute;valu&eacute;e. Par exemple, une expression utilis&eacute;e dans
140     une directive <directive>&lt;If &gt;</directive> sera &eacute;valu&eacute;e avant
141     la phase d'authentification. Par cons&eacute;quent, la variable
142     <code>%{REMOTE_USER}</code> ne sera pas encore d&eacute;finie &agrave; ce stade.</p>
143
144     <p>Les variables suivantes contiennent la valeur de l'en-t&ecirc;te de
145     requ&ecirc;te HTTP correspondant. La <a href="#functions">fonction</a>
146     <code>req</code> permet d'extraire les valeurs des autres en-t&ecirc;tes.</p>
147
148     <table border="1" style="zebra">
149     <columnspec><column width="1"/></columnspec>
150
151     <tr><th>Nom</th></tr>
152     <tr><td><code>HTTP_ACCEPT</code></td></tr>
153     <tr><td><code>HTTP_FORWARDED</code></td></tr>
154     <tr><td><code>HTTP_HOST</code></td></tr>
155     <tr><td><code>HTTP_PROXY_CONNECTION</code></td></tr>
156     <tr><td><code>HTTP_REFERER</code></td></tr>
157     <tr><td><code>HTTP_USER_AGENT</code></td></tr>
158
159     </table>
160
161     <p>Autres variables li&eacute;es aux requ&ecirc;tes</p>
162
163     <table border="1" style="zebra">
164     <columnspec><column width=".4"/><column width=".6"/></columnspec>
165
166     <tr><th>Nom</th><th>Description</th></tr>
167     <tr><td><code>REQUEST_METHOD</code></td>
168         <td>La m&eacute;thode HTTP de la requ&ecirc;te entrante (par exemple
169         <code>GET</code>)</td></tr>
170     <tr><td><code>REQUEST_SCHEME</code></td>
171         <td>Le protocole associ&eacute; &agrave; l'URI de la requ&ecirc;te</td></tr>
172     <tr><td><code>REQUEST_URI</code></td>
173         <td>La partie chemin de l'URI de la requ&ecirc;te</td></tr>
174     <tr><td><code>DOCUMENT_URI</code></td>
175         <td>Idem REQUEST_URI</td></tr>
176     <tr><td><code>REQUEST_FILENAME</code></td>
177         <td>Le chemin complet dans le syst&egrave;me de fichiers local du
178         fichier ou du script correspondant &agrave; la requ&ecirc;te, si le serveur
179         l'a d&egrave;j&agrave; d&eacute;termin&eacute; &agrave; l'instant o&ugrave; <code>REQUEST_FILENAME</code>
180         est r&eacute;f&eacute;renc&eacute;e. Dans le cas contraire, comme dans un
181         contexte de serveur virtuel, m&ecirc;me valeur que <code>REQUEST_URI</code> </td></tr>  
182     <tr><td><code>SCRIPT_FILENAME</code></td>
183         <td>Identique &agrave; <code>REQUEST_FILENAME</code></td></tr>
184     <tr><td><code>LAST_MODIFIED</code></td>
185         <td>La date et heure de derni&egrave;re modification du fichier au
186         format <code>20101231235959</code>, si elle est d&eacute;j&agrave; connue du
187         serveur au moment o&ugrave; <code>LAST_MODIFIED</code> est r&eacute;f&eacute;renc&eacute;.
188         </td></tr>
189     <tr><td><code>SCRIPT_USER</code></td>
190         <td>Le nom d'utilisateur du propri&eacute;taire du script.</td></tr>
191     <tr><td><code>SCRIPT_GROUP</code></td>
192         <td>Le nom du groupe auquel appartient le script.</td></tr>
193     <tr><td><code>PATH_INFO</code></td>
194         <td>L'information relative au nom de chemin situ&eacute;e en fin, voir
195         la directive <directive module="core">AcceptPathInfo</directive></td></tr>
196     <tr><td><code>QUERY_STRING</code></td>
197         <td>La cha&icirc;ne de param&egrave;tres de la requ&ecirc;te courante</td></tr>
198     <tr><td><code>IS_SUBREQ</code></td>
199         <td>"<code>true</code>" si la requ&ecirc;te courante est une
200         sous-requ&ecirc;te, "<code>false</code>" dans le cas contraire</td></tr>
201     <tr><td><code>THE_REQUEST</code></td>
202         <td>La requ&ecirc;te compl&egrave;te (par exemple "<code>GET /index.html
203         HTTP/1.1</code>")</td></tr>
204     <tr><td><code>REMOTE_ADDR</code></td>
205         <td>L'adresse IP de l'h&ocirc;te distant</td></tr>
206     <tr><td><code>REMOTE_HOST</code></td>
207         <td>Le nom d'h&ocirc;te de l'h&ocirc;te distant</td></tr>
208     <tr><td><code>REMOTE_USER</code></td>
209         <td>Le nom de l'utilisateur authentifi&eacute; (s'il existe)</td></tr>
210     <tr><td><code>REMOTE_IDENT</code></td>
211         <td>Le nom de l'utilisateur d&eacute;fini par <module>mod_ident</module></td></tr>
212     <tr><td><code>SERVER_NAME</code></td>
213         <td>La valeur de la directive <directive
214         module="core">ServerName</directive> du serveur virtuel courant</td></tr>
215     <tr><td><code>SERVER_PORT</code></td>
216         <td>Le port associ&eacute; au serveur virtuel courant ; voir la
217         directive <directive module="core">ServerName</directive></td></tr>
218     <tr><td><code>SERVER_ADMIN</code></td>
219         <td>La valeur de la directive <directive
220         module="core">ServerAdmin</directive> du serveur virtuel courant</td></tr>
221     <tr><td><code>SERVER_PROTOCOL</code></td>
222         <td>Le protocole utilis&eacute; par la requ&ecirc;te</td></tr>
223     <tr><td><code>DOCUMENT_ROOT</code></td>
224         <td>La valeur de la directive <directive
225         module="core">DocumentRoot</directive> du serveur virtuel
226         courant</td></tr>
227     <tr><td><code>AUTH_TYPE</code></td>
228         <td>La valeur de la directive <directive
229         module="mod_authn_core">AuthType</directive> (par exemple
230         "<code>basic</code>")</td></tr>
231     <tr><td><code>CONTENT_TYPE</code></td>
232         <td>Le type de contenu de la r&eacute;ponse</td></tr>
233     <tr><td><code>HANDLER</code></td>
234         <td>Le nom du <a href="handler.html">gestionnaire</a> qui a
235         g&eacute;n&eacute;r&eacute; la r&eacute;ponse</td></tr>
236     <tr><td><code>HTTPS</code></td>
237         <td>"<code>on</code>" si la requ&ecirc;te utilise https,
238         "<code>off</code>" dans le cas contraire</td></tr>
239     <tr><td><code>IPV6</code></td>
240         <td>"<code>on</code>" si la connexion utilise IPv6,
241         "<code>off</code>" dans le cas contraire</td></tr>
242     <tr><td><code>REQUEST_STATUS</code></td>
243         <td>Le code d'erreur HTTP de la requ&ecirc;te</td></tr>
244     <tr><td><code>REQUEST_LOG_ID</code></td>
245         <td>L'identifiant du message d'erreur associ&eacute; &agrave; la requ&ecirc;te (voir
246         la directive <directive
247         module="core">ErrorLogFormat</directive>)</td></tr>
248     <tr><td><code>CONN_LOG_ID</code></td>
249         <td>L'identifiant du message d'erreur associ&eacute; &agrave; la connexion
250         (voir la directive <directive
251         module="core">ErrorLogFormat</directive>)</td></tr>
252     <tr><td><code>CONN_REMOTE_ADDR</code></td>
253         <td>L'adresse IP du correspondant pour la connexion (voir le module
254         <module>mod_remoteip</module>)</td></tr>
255
256     </table>
257
258     <p>Variables diverses</p>
259
260     <table border="1" style="zebra">
261     <columnspec><column width=".4"/><column width=".6"/></columnspec>
262
263     <tr><th>Nom</th><th>Description</th></tr>
264     <tr><td><code>TIME_YEAR</code></td>
265         <td>L'ann&eacute;e courante (par exemple <code>2010</code>)</td></tr>
266     <tr><td><code>TIME_MON</code></td>
267         <td>Le mois courant (<code>1</code>, ..., <code>12</code>)</td></tr>
268     <tr><td><code>TIME_DAY</code></td>
269         <td>Le jour courant dans le mois</td></tr>
270     <tr><td><code>TIME_HOUR</code></td>
271         <td>Les heures de la date courante (<code>0</code>, ...,
272         <code>23</code>)</td></tr>
273     <tr><td><code>TIME_MIN</code></td>
274         <td>Les minutes de la date courante</td></tr>
275     <tr><td><code>TIME_SEC</code></td>
276         <td>Les secondes de la date courante</td></tr>
277     <tr><td><code>TIME_WDAY</code></td>
278         <td>Le jour de la semaine (&agrave; partir de <code>0</code> pour
279         dimanche)</td></tr>
280     <tr><td><code>TIME</code></td>
281         <td>La date et heure au format <code>20101231235959</code></td></tr>
282     <tr><td><code>SERVER_SOFTWARE</code></td>
283         <td>La cha&icirc;ne contenant la version du serveur</td></tr>
284     <tr><td><code>API_VERSION</code></td>
285         <td>La date de la version de l'API (module magic number)</td></tr>
286     </table>
287
288     <p>Certains modules, comme <module>mod_ssl</module>, d&eacute;finissent des
289     variables suppl&eacute;mentaires.</p>
290
291 </section>
292
293 <section id="binop">
294     <title>Op&eacute;rateurs binaires</title>
295
296     <p>&Agrave; l'exception de quelques op&eacute;rateurs de comparaison internes, les
297     op&eacute;rateurs binaires sont de la forme
298     "<code>-[a-zA-Z][a-zA-Z0-9_]+</code>", autrement dit un signe moins
299     et au moins deux caract&egrave;res. Le nom est insensible &agrave; la casse. Les
300     modules peuvent fournir des op&eacute;rateurs binaires suppl&eacute;mentaires.</p>
301
302     <section id="comp">
303     <title>Op&eacute;rateurs de comparaison</title>
304
305     <table border="1" style="zebra">
306     <columnspec><column width=".2"/><column width=".2"/><column width=".6"/></columnspec>
307
308     <tr><th>Nom</th><th>Alternative</th> <th>Description</th></tr>
309     <tr><td><code>==</code></td>
310         <td><code>=</code></td>
311         <td>Egalit&eacute; de cha&icirc;nes</td></tr>
312     <tr><td><code>!=</code></td>
313         <td></td>
314         <td>In&eacute;galit&eacute; de cha&icirc;nes</td></tr>
315     <tr><td><code>&lt;</code></td>
316         <td></td>
317         <td>Cha&icirc;ne inf&eacute;rieure &agrave;</td></tr>
318     <tr><td><code>&lt;=</code></td>
319         <td></td>
320         <td>Cha&icirc;ne inf&eacute;rieure ou &eacute;gale &agrave;</td></tr>
321     <tr><td><code>&gt;</code></td>
322         <td></td>
323         <td>Cha&icirc;ne sup&eacute;rieure &agrave;</td></tr>
324     <tr><td><code>&gt;=</code></td>
325         <td></td>
326         <td>Cha&icirc;ne sup&eacute;rieure ou &eacute;gale &agrave;</td></tr>
327     <tr><td><code>-eq</code></td>
328         <td><code>eq</code></td>
329         <td>Egalit&eacute; d'entiers</td></tr>
330     <tr><td><code>-ne</code></td>
331         <td><code>ne</code></td>
332         <td>In&eacute;galit&eacute; d'entiers</td></tr>
333     <tr><td><code>-lt</code></td>
334         <td><code>lt</code></td>
335         <td>Entier inf&eacute;rieur &agrave;</td></tr>
336     <tr><td><code>-le</code></td>
337         <td><code>le</code></td>
338         <td>Entier inf&eacute;rieur ou &eacute;gal &agrave;</td></tr>
339     <tr><td><code>-gt</code></td>
340         <td><code>gt</code></td>
341         <td>Entier sup&eacute;rieur &agrave;</td></tr>
342     <tr><td><code>-ge</code></td>
343         <td><code>ge</code></td>
344         <td>Entier sup&eacute;rieur ou &eacute;gal &agrave;</td></tr>
345     </table>
346     </section>
347
348     <section id="binaryother">
349     <title>Autres op&eacute;rateurs binaires</title>
350
351     <table border="1" style="zebra">
352     <columnspec><column width=".2"/><column width=".8"/></columnspec>
353
354     <tr><th>Nom</th><th>Description</th></tr>
355     <tr><td><code>-ipmatch</code></td>
356         <td>L'adresse IP correspond &agrave; adresse/masque</td></tr>
357     <tr><td><code>-strmatch</code></td>
358         <td>la cha&icirc;ne de gauche correspond au mod&egrave;le constitu&eacute; par la
359         cha&icirc;ne de droite (contenant des caract&egrave;res g&eacute;n&eacute;riques *, ?, [])</td></tr>
360     <tr><td><code>-strcmatch</code></td>
361         <td>idem <code>-strmatch</code>, mais insensible &agrave; la casse</td></tr>
362     <tr><td><code>-fnmatch</code></td>
363         <td>idem <code>-strmatch</code>, mais les slashes ne sont pas
364         pris en compte par les caract&egrave;res g&eacute;n&eacute;riques</td></tr>
365     </table>
366     </section>
367
368 </section>
369
370 <section id="unnop">
371     <title>Op&eacute;rateurs unaires</title>
372
373     <p>Les op&eacute;rateurs unaires acceptent un seul argument et sont
374     de la forme "<code>-[a-zA-Z]</code>",
375     autrement dit le signe moins et un caract&egrave;re. Le nom <em>est</em>
376     sensible &agrave; la casse. Les modules peuvent fournir des op&eacute;rateurs
377     unaires suppl&eacute;mentaires.</p>
378
379     <table border="1" style="zebra">
380     <columnspec><column width=".2"/><column width=".2"/><column width=".6"/></columnspec>
381
382     <tr><th>Nom</th><th>Description</th><th>Restreint</th></tr>
383     <tr><td><code>-d</code></td>
384         <td>L'argument est trait&eacute; comme un nom de fichier. 
385         Vrai si le fichier existe et correspond &agrave; un
386         r&eacute;pertoire</td><td>oui</td></tr>
387     <tr><td><code>-e</code></td>
388         <td>L'argument est trait&eacute; comme un nom de fichier. Vrai si le
389         fichier (ou dir ou special) existe</td><td>oui</td></tr>
390     <tr><td><code>-f</code></td>
391         <td>L'argument est trait&eacute; comme un nom de fichier. Vrai si le
392         fichier existe et correspond &agrave; un fichier
393         r&eacute;gulier</td><td>oui</td></tr>
394     <tr><td><code>-s</code></td>
395         <td>L'argument est trait&eacute; comme un nom de fichier. Vrai si le
396         fichier existe et n'est pas vide</td><td>oui</td></tr>
397     <tr><td><code>-L</code></td>
398         <td>L'argument est trait&eacute; comme un nom de fichier. Vrai si le
399         fichier existe et correspond &agrave; un lien
400         symbolique</td><td>oui</td></tr>
401     <tr><td><code>-h</code></td>
402         <td>L'argument est trait&eacute; comme un nom de fichier. Vrai si le
403         fichier existe et correspond &agrave; un lien symbolique
404         (identique &agrave; <code>-L</code>)</td><td>oui</td></tr>
405     <tr><td><code>-F</code></td>
406         <td>Vrai si la cha&icirc;ne correspond a un fichier valide, accessible
407         avec tous les contr&ocirc;les d'acc&egrave;s configur&eacute;s pour ce chemin. A
408         cette fin, une sous-requ&ecirc;te effectue la v&eacute;rification, et vous
409         devez utiliser ce drapeau avec soin car il peut impacter les
410         performances de votre serveur !</td><td></td></tr>
411     <tr><td><code>-U</code></td>
412         <td>Vrai si la cha&icirc;ne correspond a une URL valide, accessible
413         avec tous les contr&ocirc;les d'acc&egrave;s configur&eacute;s pour ce chemin. A
414         cette fin, une sous-requ&ecirc;te effectue la v&eacute;rification, et vous
415         devez utiliser ce drapeau avec soin car il peut impacter les
416         performances de votre serveur !</td><td></td></tr>
417     <tr><td><code>-A</code></td>
418         <td>Alias pour <code>-U</code></td><td></td></tr>
419     <tr><td><code>-n</code></td>
420         <td>Vrai si la cha&icirc;ne n'est pas vide</td><td></td></tr>
421     <tr><td><code>-z</code></td>
422         <td>Vrai si la cha&icirc;ne est vide</td><td></td></tr>
423     <tr><td><code>-T</code></td>
424         <td>Faux si la cha&icirc;ne est vide, "<code>0</code>",
425         "<code>off</code>", "<code>false</code>", ou "<code>no</code>"
426         (insensibilit&eacute; &agrave; la casse). Vrai dans le cas contraire.</td><td></td></tr>
427     <tr><td><code>-R</code></td>
428         <td>Idem "<code>%{REMOTE_ADDR} -ipmatch ...</code>", en plus
429         efficace
430         </td><td></td></tr>
431     </table>
432
433     <p>Les op&eacute;rateurs marqu&eacute;s comme "restreints" ne sont pas disponibles
434     avec certains modules comme <module>mod_include</module>.</p>
435
436 </section>
437
438 <section id="functions">
439     <title>Fonctions</title>
440
441     <p>Normalement, les fonctions dont la valeur est une cha&icirc;ne acceptent une cha&icirc;ne
442     comme argument et renvoient une cha&icirc;ne. Les noms de fonctions sont
443     insensibles &agrave; la casse. Les modules peuvent fournir des fonctions
444     suppl&eacute;mentaires.</p>
445
446     <table border="1" style="zebra">
447     <columnspec><column width=".2"/><column width=".8"/></columnspec>
448
449     <tr><th>Nom</th><th>Description</th><th>Restreint</th></tr>
450     <tr><td><code>req</code>, <code>http</code></td>
451         <td>Lit l'en-t&ecirc;te de requ&ecirc;te HTTP</td><td></td></tr>
452     <tr><td><code>resp</code></td>
453         <td>Lit l'en-t&ecirc;te de r&eacute;ponse HTTP</td><td></td></tr>
454     <tr><td><code>reqenv</code></td>
455         <td>Recherche une variable d'environnement de requ&ecirc;te</td><td></td></tr>
456     <tr><td><code>osenv</code></td>
457         <td>Recherche une variable d'environnement du syst&egrave;me
458         d'exploitation</td><td></td></tr>
459     <tr><td><code>note</code></td>
460         <td>Recherche une note de requ&ecirc;te</td><td></td></tr>
461     <tr><td><code>env</code></td>
462         <td>Renvoie le premier r&eacute;sultat positif de <code>note</code>,
463         <code>reqenv</code>, <code>osenv</code></td><td></td></tr>
464     <tr><td><code>tolower</code></td>
465         <td>Convertit une cha&icirc;ne en minuscules</td><td></td></tr>
466     <tr><td><code>toupper</code></td>
467         <td>Convertit une cha&icirc;ne en majuscules</td><td></td></tr>
468     <tr><td><code>escape</code></td>
469         <td>Echappe les caract&egrave;res sp&eacute;ciaux en codage hexad&eacute;cimal</td><td></td></tr>
470     <tr><td><code>unescape</code></td>
471         <td>"D&eacute;s&eacute;chappe" les cha&icirc;nes cod&eacute;es
472         en hexad&eacute;cimal, en ne gardant encod&eacute;s que les slashes; renvoie la cha&icirc;ne vide
473         si la s&eacute;quence %00 est rencontr&eacute;e</td><td></td></tr>
474     <tr><td><code>file</code></td>
475         <td>Lit le contenu d'un fichier</td><td>oui</td></tr>
476     <tr><td><code>filesize</code></td>
477         <td>Renvoie la taille d'un fichier (ou 0 si le fichier n'existe
478         pas ou ne correspond pas &agrave; un fichier r&eacute;gulier)</td><td>oui</td></tr>
479
480     </table>
481
482     <p>Les fonctions marqu&eacute;es comme "restreints" ne sont pas disponibles
483     avec certains modules comme <module>mod_include</module>.</p>
484
485     <p>En plus des fonctions dont la valeur est une cha&icirc;ne, il existe
486     aussi des fonctions dont la valeur est une liste, qui acceptent une
487     cha&icirc;ne comme argument, et renvoient une liste de mots, autrement dit
488     une liste de cha&icirc;nes. La liste de mot peut &ecirc;tre utilis&eacute;e avec
489     l'op&eacute;rateur sp&eacute;cial <code>-in</code>. Les noms de fonctions sont
490     insensibles &agrave; la casse. Les modules peuvent fournir des fonctions
491     suppl&eacute;mentaires.</p>
492
493     <p>Il n'existe pas de fonctions internes dont la valeur est une
494     liste. Le module <module>mod_ssl</module> fournit la fonction
495     <code>PeerExtList</code>. Voir la description de la directive
496     <directive module="mod_ssl">SSLRequire</directive> pour plus de
497     d&eacute;tails (notez que la fonction <code>PeerExtList</code> peut aussi
498     &ecirc;tre utilis&eacute;e en dehors de la directive <directive
499     module="mod_ssl">SSLRequire</directive>).</p>
500
501 </section>
502 <section id="examples">
503     
504         <title>Exemples d'expressions</title>
505         <p>Les exemples suivants montent comment utiliser les
506         expressions pour &eacute;valuer les requ&ecirc;tes :</p>
507         <!-- This section should probably be extended with more, useful examples -->
508         <highlight language="config">
509 # Comparer le nom d'h&ocirc;te avec example.com et rediriger vers
510 # www.example.com si le nom d'h&ocirc;te correspond
511 &lt;If "%{HTTP_HOST} == 'example.com'"&gt;
512     Redirect permanent / http://www.example.com
513 &lt;/If&gt;
514
515 # Forcer le type text/plain si un fichier fait l'objet d'une
516 # requ&ecirc;te dont la cha&icirc;ne de param&egrave;tres contient 'forcetext'
517 &lt;If "%{QUERY_STRING} =~ /forcetext/"&gt;
518     ForceType text/plain
519 &lt;/If&gt;
520
521 # N'autoriser l'acc&egrave;s &agrave; ce contenu que pendant les heures de
522 # travail
523 &lt;Directory "/foo/bar/business"&gt;
524      Require expr %{TIME_HOUR} -gt 9 &amp;&amp; %{TIME_HOUR} -lt 17
525 &lt;/Directory&gt;      
526         </highlight>
527 </section>
528
529 <section id="other">
530     <title>Autres</title>
531
532     <table border="1" style="zebra">
533     <columnspec><column width=".2"/><column width=".2"/><column width=".6"/></columnspec>
534
535     <tr><th>Nom</th><th>Alternative</th> <th>Description</th></tr>
536     <tr><td><code>-in</code></td>
537         <td><code>in</code></td>
538         <td>cha&icirc;ne contenue dans une liste de cha&icirc;nes</td></tr>
539     <tr><td><code>/regexp/</code></td>
540         <td><code>m#regexp#</code></td>
541         <td>Expression rationnelle (la seconde forme permet de sp&eacute;cifier
542         des d&eacute;limiteurs autres que /)</td></tr>
543     <tr><td><code>/regexp/i</code></td>
544         <td><code>m#regexp#i</code></td>
545         <td>Expression rationnelle insensible &agrave; la casse</td></tr>
546     <tr><td><code>$0 ... $9</code></td>
547         <td></td>
548         <td>R&eacute;f&eacute;rences arri&egrave;res dans les expressions rationnelles</td></tr>
549     </table>
550
551     <section id="rebackref">
552         <title>R&eacute;f&eacute;rences arri&egrave;res dans les expressions rationnelles</title>
553         <p>Les cha&icirc;nes <code>$0</code> ... <code>$9</code> permettent de
554         r&eacute;f&eacute;rencer les groupes de capture en provenance d'expressions
555         rationnelles pr&eacute;c&eacute;demment ex&eacute;cut&eacute;es et mises en correspondance avec
556         succ&egrave;s. Elles ne peuvent normalement &ecirc;tre utilis&eacute;es que dans la
557         m&ecirc;me expression que celle mise en correspondance, mais certains
558         modules permettent de les utiliser de mani&egrave;re sp&eacute;ciale.</p>
559     </section>
560
561 </section>
562
563 <section id="sslrequire">
564     <title>Comparaison avec SSLRequire</title>
565     <p>La syntaxe <em>ap_expr</em> consiste principalement en une
566     surcouche de la syntaxe de la directive obsol&egrave;te <directive
567     module="mod_ssl">SSLRequire</directive>. Vous pouvez consulter la
568     liste de leur diff&eacute;rences dans la documentation de la directive
569     <directive module="mod_ssl">SSLRequire</directive>.</p>
570 </section>
571
572 </manualpage>