expr.xml.fr revision b475917ddf898282aa51ce31b3275c2c4783ce98
297be3708069ef31814d6d75c0d71a50a78feb03Mark Andrews<!DOCTYPE manualpage SYSTEM "/style/manualpage.dtd">
75c0816e8295e180f4bc7f10db3d0d880383bc1cMark Andrews<?xml-stylesheet type="text/xsl" href="/style/manual.fr.xsl"?>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<!-- English Revision: 1663123:1673892 (outdated) -->
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<!-- French translation : Lucien GENTIS -->
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<!-- Reviewed by : Vincent Deffontaines -->
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Licensed to the Apache Software Foundation (ASF) under one or more
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein contributor license agreements. See the NOTICE file distributed with
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein this work for additional information regarding copyright ownership.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The ASF licenses this file to You under the Apache License, Version 2.0
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein (the "License"); you may not use this file except in compliance with
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the License. You may obtain a copy of the License at
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Unless required by applicable law or agreed to in writing, software
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein distributed under the License is distributed on an "AS IS" BASIS,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein See the License for the specific language governing permissions and
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews limitations under the License.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <title>Les expressions dans le serveur HTTP Apache</title>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <p>Historiquement, il existe de nombreuses variantes dans la syntaxe
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein des expressions permettant d'exprimer une condition dans les
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein différents modules du serveur HTTP Apache. À ce titre, des travaux sont
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein en cours pour n'utiliser qu'une seule variante nommée
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em>ap_expr</em>, pour toutes les directives de configuration. Ce
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein document décrit l'interpréteur d'expressions <em>ap_expr</em>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <p>Le type d'expression <em>ap_expr</em> est appelé à remplacer la
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein plupart des autres types d'expressions dans HTTPD. Par exemple, la
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein directive obsolète <directive
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein module="mod_ssl">SSLRequire</directive> peut être remplacée par la
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein directive <a href="mod/mod_authz_core.html#reqexpr">Require
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<seealso><directive module="core">If</directive></seealso>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<seealso><directive module="core" type="section">If</directive></seealso>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<seealso><directive module="core" type="section">ElseIf</directive></seealso>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<seealso><directive module="core" type="section">Else</directive></seealso>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<seealso><directive module="core" type="section">ErrorDocument</directive></seealso>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<seealso><directive module="mod_alias">Alias</directive></seealso>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<seealso><directive module="mod_alias">ScriptAlias</directive></seealso>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<seealso><directive module="mod_alias">Redirect</directive></seealso>
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater<seealso><directive module="mod_auth_basic">AuthBasicFake</directive></seealso>
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater<seealso><directive module="mod_auth_form">AuthFormLoginRequiredLocation</directive></seealso>
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater<seealso><directive module="mod_auth_form">AuthFormLoginSuccessLocation</directive></seealso>
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater<seealso><directive module="mod_auth_form">AuthFormLogoutLocation</directive></seealso>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<seealso><directive module="mod_authn_core">AuthName</directive></seealso>
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater<seealso><directive module="mod_authn_core">AuthType</directive></seealso>
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater<seealso><directive module="mod_rewrite">RewriteCond</directive></seealso>
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater<seealso><directive module="mod_setenvif">SetEnvIfExpr</directive></seealso>
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater<seealso><directive module="mod_headers">Header</directive></seealso>
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater<seealso><directive module="mod_headers">RequestHeader</directive></seealso>
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater<seealso><directive module="mod_filter">FilterProvider</directive></seealso>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<seealso><a href="mod/mod_authz_core.html#reqexpr">Require expr</a></seealso>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<seealso><a href="mod/mod_authnz_ldap.html#requser">Require ldap-user</a></seealso>
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews<seealso><a href="mod/mod_authnz_ldap.html#reqgroup">Require ldap-group</a></seealso>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<seealso><a href="mod/mod_authnz_ldap.html#reqdn">Require ldap-dn</a></seealso>
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater<seealso><a href="mod/mod_authnz_ldap.html#reqattribute">Require ldap-attribute</a></seealso>
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater<seealso><a href="mod/mod_authnz_ldap.html#reqfilter">Require ldap-filter</a></seealso>
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater<seealso><a href="mod/mod_authnz_ldap.html#reqsearch">Require ldap-search</a></seealso>
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater<seealso><a href="mod/mod_authz_dbd.html#reqgroup">Require dbd-group</a></seealso>
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater<seealso><a href="mod/mod_authz_dbm.html#reqgroup">Require dbm-group</a></seealso>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<seealso><a href="mod/mod_authz_groupfile.html#reqgroup">Require group</a></seealso>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<seealso><a href="mod/mod_authz_host.html#reqhost">Require host</a></seealso>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<seealso><directive module="mod_ssl">SSLRequire</directive></seealso>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<seealso><directive module="mod_log_debug">LogMessage</directive></seealso>
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater <p>La <a href="http://fr.wikipedia.org/wiki/Forme_de_Backus-Naur">Forme de Backus-Naur</a>
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater (souvent abrégée en BNF, de l'anglais Backus-Naur Form) est une notation permettant de décrire
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein les règles syntaxiques des langages de programmation. En
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater général, les expressions représentent des valeurs booléennes. Dans
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater ce cas, le point de départ de la BNF est <code>expr</code>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Cependant, certaines directives comme <directive
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein module="mod_log_debug">LogMessage</directive> utilisent comme
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein paramètres des expressions qui représentent des chaînes de
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein caractères. Dans ce cas, le point de départ de la BNF est
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updaterexpr ::= "<strong>true</strong>" | "<strong>false</strong>"
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater | "<strong>(</strong>" expr "<strong>)</strong>"
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updatercomp ::= stringcomp
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater | unaryop word
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein | word binaryop word
ab8729140b1ad688ab03e1e9ce438fb1cbb49222Automatic Updater | word "<strong>in</strong>" "<strong>{</strong>" wordlist "<strong>}</strong>"
28b3569d6248168e6c00caab951521cc8141a49dAutomatic Updaterstringcomp ::= word "<strong>==</strong>" word
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinintegercomp ::= word "<strong>-eq</strong>" word | word "<strong>eq</strong>" word
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews | word "<strong>-ne</strong>" word | word "<strong>ne</strong>" word
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein | word "<strong>-lt</strong>" word | word "<strong>lt</strong>" word
28b3569d6248168e6c00caab951521cc8141a49dAutomatic Updater | word "<strong>-le</strong>" word | word "<strong>le</strong>" word
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein | word "<strong>-gt</strong>" word | word "<strong>gt</strong>" word
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein | word "<strong>-ge</strong>" word | word "<strong>ge</strong>" word
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinwordlist ::= word
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein | "<strong>'</strong>" string "<strong>'</strong>"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein | "<strong>"</strong>" string "<strong>"</strong>"
28b3569d6248168e6c00caab951521cc8141a49dAutomatic Updaterstring ::= stringpart
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein | string stringpart
28b3569d6248168e6c00caab951521cc8141a49dAutomatic Updaterstringpart ::= cstring
28b3569d6248168e6c00caab951521cc8141a49dAutomatic Updatercstring ::= ...
28b3569d6248168e6c00caab951521cc8141a49dAutomatic Updaterdigit ::= [0-9]+
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinvariable ::= "<strong>%{</strong>" varname "<strong>}</strong>"
28b3569d6248168e6c00caab951521cc8141a49dAutomatic Updater | "<strong>%{</strong>" funcname "<strong>:</strong>" funcargs "<strong>}</strong>"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinfunction ::= funcname "<strong>(</strong>" wordlist "<strong>)</strong>"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinlistfunction ::= listfuncname "<strong>(</strong>" word "<strong>)</strong>"
9ef82979c49da3dd3647273b1cd6ed7d3352c003Automatic Updater <p>L'interpréteur d'expressions fournit plusieurs variables de la
9ef82979c49da3dd3647273b1cd6ed7d3352c003Automatic Updater forme <code>%{HTTP_HOST}</code>. Notez que la valeur d'une variable
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein peut dépendre de la phase du traitement de la requête au cours de
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein laquelle elle est évaluée. Par exemple, une expression utilisée dans
9ef82979c49da3dd3647273b1cd6ed7d3352c003Automatic Updater une directive <directive><If ></directive> sera évaluée avant
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein la phase d'authentification. Par conséquent, la variable
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code>%{REMOTE_USER}</code> ne sera pas encore définie à ce stade.</p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <p>Les variables suivantes contiennent la valeur de l'en-tête de
9ef82979c49da3dd3647273b1cd6ed7d3352c003Automatic Updater requête HTTP correspondant. La <a href="#functions">fonction</a>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code>req</code> permet d'extraire les valeurs des autres
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein en-têtes. L'utilisation de ces variables peut provoquer
9ef82979c49da3dd3647273b1cd6ed7d3352c003Automatic Updater l'ajout du nom d'en-tête correspondant à l'en-tête Vary de la
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein réponse HTTP, sauf spécification contraire pour la directive
9ef82979c49da3dd3647273b1cd6ed7d3352c003Automatic Updater qui accepte l'expression comme paramètre. La <a
9ef82979c49da3dd3647273b1cd6ed7d3352c003Automatic Updater href="#functions">function</a> <code>req_novary</code> permet de
9ef82979c49da3dd3647273b1cd6ed7d3352c003Automatic Updater modifier ce comportement.</p>
507151045be68c671ffd4e2f37e17cdfa0376fc4Automatic Updater <columnspec><column width="1"/></columnspec>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <tr><td><code>HTTP_PROXY_CONNECTION</code></td></tr>
507151045be68c671ffd4e2f37e17cdfa0376fc4Automatic Updater <tr><td><code>HTTP_REFERER</code></td></tr>
507151045be68c671ffd4e2f37e17cdfa0376fc4Automatic Updater <tr><td><code>HTTP_USER_AGENT</code></td></tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <p>Autres variables liées aux requêtes</p>
507151045be68c671ffd4e2f37e17cdfa0376fc4Automatic Updater <columnspec><column width=".4"/><column width=".6"/></columnspec>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <td>La méthode HTTP de la requête entrante (par exemple
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews <td>Le protocole associé à l'URI de la requête</td></tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <td>La partie chemin de l'URI de la requête</td></tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <td>Le chemin complet dans le système de fichiers local du
507151045be68c671ffd4e2f37e17cdfa0376fc4Automatic Updater fichier ou du script correspondant à la requête, si le serveur
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein l'a dèjà déterminé à l'instant où <code>REQUEST_FILENAME</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein est référencée. Dans le cas contraire, comme dans un
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews contexte de serveur virtuel, même valeur que <code>REQUEST_URI</code> </td></tr>
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews <td>Identique à <code>REQUEST_FILENAME</code></td></tr>
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews <td>La date et heure de dernière modification du fichier au
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews format <code>20101231235959</code>, si elle est déjà connue du
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews serveur au moment où <code>LAST_MODIFIED</code> est référencé.
28b3569d6248168e6c00caab951521cc8141a49dAutomatic Updater <td>Le nom d'utilisateur du propriétaire du script.</td></tr>
28b3569d6248168e6c00caab951521cc8141a49dAutomatic Updater <td>Le nom du groupe auquel appartient le script.</td></tr>
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews <td>L'information relative au nom de chemin située en fin, voir
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews la directive <directive module="core">AcceptPathInfo</directive></td></tr>
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews <td>La chaîne de paramètres de la requête courante</td></tr>
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews <td>"<code>true</code>" si la requête courante est une
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews sous-requête, "<code>false</code>" dans le cas contraire</td></tr>
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews <td>La requête complète (par exemple "<code>GET /index.html
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews <td>L'adresse IP de l'hôte distant</td></tr>
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews <td>Le nom d'hôte de l'hôte distant</td></tr>
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews <td>Le nom de l'utilisateur authentifié, s'il existe (non
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews disponible à l'intérieur d'un bloc <directive><If></directive>)</td></tr>
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews <td>Le nom de l'utilisateur défini par <module>mod_ident</module></td></tr>
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews module="core">ServerName</directive> du serveur virtuel courant</td></tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <td>Le port associé au serveur virtuel courant ; voir la
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein directive <directive module="core">ServerName</directive></td></tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein module="core">ServerAdmin</directive> du serveur virtuel courant</td></tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <td>Le protocole utilisé par la requête (par
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein exemple HTTP/1.1). Avec certains types de sous-requêtes
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein internes, cette variable prend la valeur <code>INCLUDED</code>.</td></tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <tr><td><code>SERVER_PROTOCOL_VERSION</code></td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <td>Un nombre qui représente la version HTTP de la requête :
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code>1001</code> correspond à HTTP/1.1 et <code>9</code> à
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <tr><td><code>SERVER_PROTOCOL_VERSION_MAJOR</code></td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <td>La partie majeure de la version HTTP de la requête, par
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <tr><td><code>SERVER_PROTOCOL_VERSION_MINOR</code></td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <td>La partie mineure de la version HTTP de la requête, par
chaîne de droite (contenant des caractères génériques *, ?, [])</td></tr>
d'en-tête correspondants ne seront pas ajoutés à l'en-tête Vary</td><td></td></tr>
utilisées, le nom d'en-tête sera automatiquement ajouté à l'en-tête
# Comparer le nom d'hôte avec example.com et rediriger vers
# www.example.com si le nom d'hôte correspond
<If "%{HTTP_HOST} == 'example.com'">
Redirect permanent / http://www.example.com/