Blame docs/manual/expr.html.fr.utf8

Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
Packit 90a5c9
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
Packit 90a5c9
Packit 90a5c9
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Packit 90a5c9
              This file is generated from xml source: DO NOT EDIT
Packit 90a5c9
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Packit 90a5c9
      -->
Packit 90a5c9
<title>Les expressions dans le serveur HTTP Apache - Serveur HTTP Apache Version 2.4</title>
Packit 90a5c9
<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
Packit 90a5c9
<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
Packit 90a5c9
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="./style/css/prettify.css" />
Packit 90a5c9
<script src="./style/scripts/prettify.min.js" type="text/javascript">
Packit 90a5c9
</script>
Packit 90a5c9
Packit 90a5c9
<link href="./images/favicon.ico" rel="shortcut icon" /></head>
Packit 90a5c9
<body id="manual-page">
Packit 90a5c9

Modules | Directives | FAQ | Glossaire | Plan du site

Packit 90a5c9

Serveur HTTP Apache Version 2.4

Packit 90a5c9
Packit 90a5c9
<-
Packit 90a5c9
Packit 90a5c9
Apache > Serveur HTTP > Documentation > Version 2.4

Les expressions dans le serveur HTTP Apache

Packit 90a5c9
Packit 90a5c9

Langues Disponibles:  en  |

Packit 90a5c9
 fr 

Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
    

Historiquement, il existe de nombreuses variantes dans la syntaxe

Packit 90a5c9
    des expressions permettant d'exprimer une condition dans les
Packit 90a5c9
    différents modules du serveur HTTP Apache. À ce titre, des travaux sont
Packit 90a5c9
    en cours pour n'utiliser qu'une seule variante nommée
Packit 90a5c9
    ap_expr, pour toutes les directives de configuration. Ce
Packit 90a5c9
    document décrit l'interpréteur d'expressions ap_expr.
Packit 90a5c9
    

Packit 90a5c9
    

Le type d'expression ap_expr est appelé à remplacer la

Packit 90a5c9
    plupart des autres types d'expressions dans HTTPD. Par exemple, la
Packit 90a5c9
    directive obsolète SSLRequire peut être remplacée par la
Packit 90a5c9
    directive Require
Packit 90a5c9
    expr.
Packit 90a5c9
    

Packit 90a5c9
  
Packit 90a5c9
Packit 90a5c9
  • Variables
  • Packit 90a5c9
  • Opérateurs binaires
  • Packit 90a5c9
  • Opérateurs unaires
  • Packit 90a5c9
  • Fonctions
  • Packit 90a5c9
  • Exemples d'expressions
  • Packit 90a5c9
  • Autres
  • Packit 90a5c9
  • Comparaison avec SSLRequire
  • Packit 90a5c9
  • Historique de version
  • Packit 90a5c9

    Voir aussi

    Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    Syntaxe en Forme de Backus-Naur

    Packit 90a5c9
        
    Packit 90a5c9
          

    La Forme de Backus-Naur

    Packit 90a5c9
          (souvent abrégée en BNF, de l'anglais Backus-Naur Form) est une notation permettant de décrire
    Packit 90a5c9
          les règles syntaxiques des langages de programmation. En
    Packit 90a5c9
          général, les expressions représentent des valeurs booléennes. Dans
    Packit 90a5c9
          ce cas, le point de départ de la BNF est expr.
    Packit 90a5c9
          Cependant, certaines directives comme LogMessage utilisent comme
    Packit 90a5c9
          paramètres des expressions qui représentent des chaînes de
    Packit 90a5c9
          caractères. Dans ce cas, le point de départ de la BNF est
    Packit 90a5c9
          string.
    Packit 90a5c9
          

    Packit 90a5c9
    Packit 90a5c9
    expr        ::= "true" | "false"
    Packit 90a5c9
                  | "!" expr
    Packit 90a5c9
                  | expr "&&" expr
    Packit 90a5c9
                  | expr "||" expr
    Packit 90a5c9
                  | "(" expr ")"
    Packit 90a5c9
                  | comp
    Packit 90a5c9
    Packit 90a5c9
    comp        ::= stringcomp
    Packit 90a5c9
                  | integercomp
    Packit 90a5c9
                  | unaryop word
    Packit 90a5c9
                  | word binaryop word
    Packit 90a5c9
                  | word "in" "{" wordlist "}"
    Packit 90a5c9
                  | word "in" listfunction
    Packit 90a5c9
                  | word "=~" regex
    Packit 90a5c9
                  | word "!~" regex
    Packit 90a5c9
    Packit 90a5c9
    Packit 90a5c9
    stringcomp  ::= word "==" word
    Packit 90a5c9
                  | word "!=" word
    Packit 90a5c9
                  | word "<"  word
    Packit 90a5c9
                  | word "<=" word
    Packit 90a5c9
                  | word ">"  word
    Packit 90a5c9
                  | word ">=" word
    Packit 90a5c9
    Packit 90a5c9
    integercomp ::= word "-eq" word | word "eq" word
    Packit 90a5c9
                  | word "-ne" word | word "ne" word
    Packit 90a5c9
                  | word "-lt" word | word "lt" word
    Packit 90a5c9
                  | word "-le" word | word "le" word
    Packit 90a5c9
                  | word "-gt" word | word "gt" word
    Packit 90a5c9
                  | word "-ge" word | word "ge" word
    Packit 90a5c9
    Packit 90a5c9
    wordlist    ::= word
    Packit 90a5c9
                  | wordlist "," word
    Packit 90a5c9
    Packit 90a5c9
    word        ::= word "." word
    Packit 90a5c9
                  | digit
    Packit 90a5c9
                  | "'" string "'"
    Packit 90a5c9
                  | """ string """
    Packit 90a5c9
                  | variable
    Packit 90a5c9
    	      | rebackref
    Packit 90a5c9
                  | function
    Packit 90a5c9
    Packit 90a5c9
    string      ::= stringpart
    Packit 90a5c9
                  | string stringpart
    Packit 90a5c9
    Packit 90a5c9
    stringpart  ::= cstring
    Packit 90a5c9
                  | variable
    Packit 90a5c9
    	      | rebackref
    Packit 90a5c9
    Packit 90a5c9
    cstring     ::= ...
    Packit 90a5c9
    digit       ::= [0-9]+
    Packit 90a5c9
    Packit 90a5c9
    variable    ::= "%{" varname "}"
    Packit 90a5c9
                  | "%{" funcname ":" funcargs "}"
    Packit 90a5c9
    Packit 90a5c9
    rebackref   ::= "$" [0-9]
    Packit 90a5c9
    Packit 90a5c9
    function     ::= funcname "(" word ")"
    Packit 90a5c9
    Packit 90a5c9
    listfunction ::= listfuncname "(" word ")"
    Packit 90a5c9
    Packit 90a5c9
    Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    Variables

    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        

    L'interpréteur d'expressions fournit plusieurs variables de la

    Packit 90a5c9
        forme %{HTTP_HOST}. Notez que la valeur d'une variable
    Packit 90a5c9
        peut dépendre de la phase du traitement de la requête au cours de
    Packit 90a5c9
        laquelle elle est évaluée. Par exemple, une expression utilisée dans
    Packit 90a5c9
        une directive <If > sera évaluée avant
    Packit 90a5c9
        la phase d'authentification. Par conséquent, la variable
    Packit 90a5c9
        %{REMOTE_USER} ne sera pas encore définie à ce stade.

    Packit 90a5c9
    Packit 90a5c9
        

    Les variables suivantes contiennent la valeur de l'en-tête de

    Packit 90a5c9
        requête HTTP correspondant. La fonction
    Packit 90a5c9
        req permet d'extraire les valeurs des autres
    Packit 90a5c9
        en-têtes. L'utilisation de ces variables peut provoquer
    Packit 90a5c9
        l'ajout du nom d'en-tête correspondant à l'en-tête Vary de la
    Packit 90a5c9
        réponse HTTP, sauf spécification contraire pour la directive
    Packit 90a5c9
        qui accepte l'expression comme paramètre. La function req_novary permet de
    Packit 90a5c9
        modifier ce comportement.

    Packit 90a5c9
    Packit 90a5c9
        
    Nom
    Packit 90a5c9
    HTTP_ACCEPT
    Packit 90a5c9
    HTTP_COOKIE
    Packit 90a5c9
    HTTP_FORWARDED
    Packit 90a5c9
    HTTP_HOST
    Packit 90a5c9
    HTTP_PROXY_CONNECTION
    Packit 90a5c9
    HTTP_REFERER
    Packit 90a5c9
    HTTP_USER_AGENT
    Packit 90a5c9
    Packit 90a5c9
    Packit 90a5c9
        

    Autres variables liées aux requêtes

    Packit 90a5c9
    Packit 90a5c9
        
    NomDescription
    Packit 90a5c9
    REQUEST_METHOD
    Packit 90a5c9
            La méthode HTTP de la requête entrante (par exemple
    Packit 90a5c9
    	GET)
    Packit 90a5c9
    REQUEST_SCHEME
    Packit 90a5c9
            Le protocole associé à l'URI de la requête
    Packit 90a5c9
    REQUEST_URI
    Packit 90a5c9
            La partie chemin de l'URI de la requête
    Packit 90a5c9
    DOCUMENT_URI
    Packit 90a5c9
            Idem REQUEST_URI
    Packit 90a5c9
    REQUEST_FILENAME
    Packit 90a5c9
            Le chemin complet dans le système de fichiers local du
    Packit 90a5c9
    	fichier ou du script correspondant à la requête, si le serveur
    Packit 90a5c9
    	l'a dèjà déterminé à l'instant où REQUEST_FILENAME
    Packit 90a5c9
    	est référencée. Dans le cas contraire, comme dans un
    Packit 90a5c9
    	contexte de serveur virtuel, même valeur que REQUEST_URI 
    Packit 90a5c9
    SCRIPT_FILENAME
    Packit 90a5c9
            Identique à REQUEST_FILENAME
    Packit 90a5c9
    LAST_MODIFIED
    Packit 90a5c9
            La date et heure de dernière modification du fichier au
    Packit 90a5c9
    	format 20101231235959, si elle est déjà connue du
    Packit 90a5c9
    	serveur au moment où LAST_MODIFIED est référencé.
    Packit 90a5c9
            
    Packit 90a5c9
    SCRIPT_USER
    Packit 90a5c9
            Le nom d'utilisateur du propriétaire du script.
    Packit 90a5c9
    SCRIPT_GROUP
    Packit 90a5c9
            Le nom du groupe auquel appartient le script.
    Packit 90a5c9
    PATH_INFO
    Packit 90a5c9
            L'information relative au nom de chemin située en fin, voir
    Packit 90a5c9
    	la directive AcceptPathInfo
    Packit 90a5c9
    QUERY_STRING
    Packit 90a5c9
            La chaîne de paramètres de la requête courante
    Packit 90a5c9
    IS_SUBREQ
    Packit 90a5c9
            "true" si la requête courante est une
    Packit 90a5c9
    	sous-requête, "false" dans le cas contraire
    Packit 90a5c9
    THE_REQUEST
    Packit 90a5c9
            La requête complète (par exemple "GET /index.html
    Packit 90a5c9
    	HTTP/1.1")
    Packit 90a5c9
    REMOTE_ADDR
    Packit 90a5c9
            L'adresse IP de l'hôte distant
    Packit 90a5c9
    REMOTE_PORT
    Packit 90a5c9
            Le port de l'hôte distant (versions 2.4.26 et supérieures)
    Packit 90a5c9
    REMOTE_HOST
    Packit 90a5c9
            Le nom d'hôte de l'hôte distant
    Packit 90a5c9
    REMOTE_USER
    Packit 90a5c9
            Le nom de l'utilisateur authentifié, s'il existe (non
    Packit 90a5c9
    	disponible à l'intérieur d'un bloc <If>)
    Packit 90a5c9
    REMOTE_IDENT
    Packit 90a5c9
            Le nom de l'utilisateur défini par mod_ident
    Packit 90a5c9
    SERVER_NAME
    Packit 90a5c9
            La valeur de la directive ServerName du serveur virtuel courant
    Packit 90a5c9
    SERVER_PORT
    Packit 90a5c9
            Le port associé au serveur virtuel courant ; voir la
    Packit 90a5c9
    	directive ServerName
    Packit 90a5c9
    SERVER_ADMIN
    Packit 90a5c9
            La valeur de la directive ServerAdmin du serveur virtuel courant
    Packit 90a5c9
    SERVER_PROTOCOL
    Packit 90a5c9
            Le protocole utilisé par la requête
    Packit 90a5c9
    DOCUMENT_ROOT
    Packit 90a5c9
            La valeur de la directive DocumentRoot du serveur virtuel
    Packit 90a5c9
    	courant
    Packit 90a5c9
    AUTH_TYPE
    Packit 90a5c9
            La valeur de la directive AuthType (par exemple
    Packit 90a5c9
    	"basic")
    Packit 90a5c9
    CONTENT_TYPE
    Packit 90a5c9
            Le type de contenu de la réponse (non
    Packit 90a5c9
    	disponible à l'intérieur d'un bloc <If>)
    Packit 90a5c9
    HANDLER
    Packit 90a5c9
            Le nom du gestionnaire qui a
    Packit 90a5c9
    	généré la réponse
    Packit 90a5c9
    HTTP2
    Packit 90a5c9
            "on" si la requête utilise http/2,
    Packit 90a5c9
                "off" dans le cas contraire
    Packit 90a5c9
    HTTPS
    Packit 90a5c9
            "on" si la requête utilise https,
    Packit 90a5c9
    	"off" dans le cas contraire
    Packit 90a5c9
    IPV6
    Packit 90a5c9
            "on" si la connexion utilise IPv6,
    Packit 90a5c9
    	"off" dans le cas contraire
    Packit 90a5c9
    REQUEST_STATUS
    Packit 90a5c9
            Le code d'erreur HTTP de la requête (non
    Packit 90a5c9
    	disponible à l'intérieur d'un bloc <If>)
    Packit 90a5c9
    REQUEST_LOG_ID
    Packit 90a5c9
            L'identifiant du message d'erreur associé à la requête (voir
    Packit 90a5c9
    	la directive ErrorLogFormat)
    Packit 90a5c9
    CONN_LOG_ID
    Packit 90a5c9
            L'identifiant du message d'erreur associé à la connexion
    Packit 90a5c9
    	(voir la directive ErrorLogFormat)
    Packit 90a5c9
    CONN_REMOTE_ADDR
    Packit 90a5c9
            L'adresse IP du correspondant pour la connexion (voir le module
    Packit 90a5c9
    	mod_remoteip)
    Packit 90a5c9
    CONTEXT_PREFIX
    Packit 90a5c9
            
    Packit 90a5c9
    CONTEXT_DOCUMENT_ROOT
    Packit 90a5c9
            
    Packit 90a5c9
    Packit 90a5c9
    Packit 90a5c9
        

    Variables diverses

    Packit 90a5c9
    Packit 90a5c9
        
    NomDescription
    Packit 90a5c9
    TIME_YEAR
    Packit 90a5c9
            L'année courante (par exemple 2010)
    Packit 90a5c9
    TIME_MON
    Packit 90a5c9
            Le mois courant (01, ..., 12)
    Packit 90a5c9
    TIME_DAY
    Packit 90a5c9
            Le jour courant dans le mois (01, ...)
    Packit 90a5c9
    TIME_HOUR
    Packit 90a5c9
            Les heures de la date courante (00, ...,
    Packit 90a5c9
    	23)
    Packit 90a5c9
    TIME_MIN
    Packit 90a5c9
            Les minutes de la date courante
    Packit 90a5c9
    TIME_SEC
    Packit 90a5c9
            Les secondes de la date courante
    Packit 90a5c9
    TIME_WDAY
    Packit 90a5c9
            Le jour de la semaine (à partir de 0 pour
    Packit 90a5c9
    	dimanche)
    Packit 90a5c9
    TIME
    Packit 90a5c9
            La date et heure au format 20101231235959
    Packit 90a5c9
    SERVER_SOFTWARE
    Packit 90a5c9
            La chaîne contenant la version du serveur
    Packit 90a5c9
    API_VERSION
    Packit 90a5c9
            La date de la version de l'API (module magic number)
    Packit 90a5c9
    Packit 90a5c9
    Packit 90a5c9
        

    Certains modules, comme mod_ssl, définissent des

    Packit 90a5c9
        variables supplémentaires.

    Packit 90a5c9
    Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    Opérateurs binaires

    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        

    À l'exception de quelques opérateurs de comparaison internes, les

    Packit 90a5c9
        opérateurs binaires sont de la forme
    Packit 90a5c9
        "-[a-zA-Z][a-zA-Z0-9_]+", autrement dit un signe moins
    Packit 90a5c9
        et au moins deux caractères. Le nom est insensible à la casse. Les
    Packit 90a5c9
        modules peuvent fournir des opérateurs binaires supplémentaires.

    Packit 90a5c9
    Packit 90a5c9
        

    Opérateurs de comparaison

    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        
    NomAlternative Description
    Packit 90a5c9
    ==
    Packit 90a5c9
            =
    Packit 90a5c9
            Egalité de chaînes
    Packit 90a5c9
    !=
    Packit 90a5c9
            
    Packit 90a5c9
            Inégalité de chaînes
    Packit 90a5c9
    <
    Packit 90a5c9
            
    Packit 90a5c9
            Chaîne inférieure à
    Packit 90a5c9
    <=
    Packit 90a5c9
            
    Packit 90a5c9
            Chaîne inférieure ou égale à
    Packit 90a5c9
    >
    Packit 90a5c9
            
    Packit 90a5c9
            Chaîne supérieure à
    Packit 90a5c9
    >=
    Packit 90a5c9
            
    Packit 90a5c9
            Chaîne supérieure ou égale à
    Packit 90a5c9
    =~
    Packit 90a5c9
            
    Packit 90a5c9
            La chaîne correspond à l'expression rationnelle
    Packit 90a5c9
    !~
    Packit 90a5c9
            
    Packit 90a5c9
            La chaîne ne correspond pas à l'expression rationnelle
    Packit 90a5c9
    -eq
    Packit 90a5c9
            eq
    Packit 90a5c9
            Egalité d'entiers
    Packit 90a5c9
    -ne
    Packit 90a5c9
            ne
    Packit 90a5c9
            Inégalité d'entiers
    Packit 90a5c9
    -lt
    Packit 90a5c9
            lt
    Packit 90a5c9
            Entier inférieur à
    Packit 90a5c9
    -le
    Packit 90a5c9
            le
    Packit 90a5c9
            Entier inférieur ou égal à
    Packit 90a5c9
    -gt
    Packit 90a5c9
            gt
    Packit 90a5c9
            Entier supérieur à
    Packit 90a5c9
    -ge
    Packit 90a5c9
            ge
    Packit 90a5c9
            Entier supérieur ou égal à
    Packit 90a5c9
    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        

    Autres opérateurs binaires

    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        
    NomDescription
    Packit 90a5c9
    -ipmatch
    Packit 90a5c9
            L'adresse IP correspond à adresse/masque
    Packit 90a5c9
    -strmatch
    Packit 90a5c9
            la chaîne de gauche correspond au modèle constitué par la
    Packit 90a5c9
    	chaîne de droite (contenant des caractères génériques *, ?, [])
    Packit 90a5c9
    -strcmatch
    Packit 90a5c9
            idem -strmatch, mais insensible à la casse
    Packit 90a5c9
    -fnmatch
    Packit 90a5c9
            idem -strmatch, mais les slashes ne sont pas
    Packit 90a5c9
    	pris en compte par les caractères génériques
    Packit 90a5c9
    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    Opérateurs unaires

    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        

    Les opérateurs unaires acceptent un seul argument et sont

    Packit 90a5c9
        de la forme "-[a-zA-Z]",
    Packit 90a5c9
        autrement dit le signe moins et un caractère. Le nom est
    Packit 90a5c9
        sensible à la casse. Les modules peuvent fournir des opérateurs
    Packit 90a5c9
        unaires supplémentaires.

    Packit 90a5c9
    Packit 90a5c9
        
    NomDescriptionRemarques particulières
    Packit 90a5c9
    -d
    Packit 90a5c9
            L'argument est traité comme un nom de fichier. 
    Packit 90a5c9
    	Vrai si le fichier existe et correspond à un
    Packit 90a5c9
    	répertoireoui
    Packit 90a5c9
    -e
    Packit 90a5c9
            L'argument est traité comme un nom de fichier. Vrai si le
    Packit 90a5c9
    	fichier (ou dir ou special) existeoui
    Packit 90a5c9
    -f
    Packit 90a5c9
            L'argument est traité comme un nom de fichier. Vrai si le
    Packit 90a5c9
    	fichier existe et correspond à un fichier
    Packit 90a5c9
    	régulieroui
    Packit 90a5c9
    -s
    Packit 90a5c9
            L'argument est traité comme un nom de fichier. Vrai si le
    Packit 90a5c9
    	fichier existe et n'est pas videoui
    Packit 90a5c9
    -L
    Packit 90a5c9
            L'argument est traité comme un nom de fichier. Vrai si le
    Packit 90a5c9
    	fichier existe et correspond à un lien
    Packit 90a5c9
    	symboliqueoui
    Packit 90a5c9
    -h
    Packit 90a5c9
            L'argument est traité comme un nom de fichier. Vrai si le
    Packit 90a5c9
    	fichier existe et correspond à un lien symbolique
    Packit 90a5c9
    	(identique à -L)oui
    Packit 90a5c9
    -F
    Packit 90a5c9
            Vrai si la chaîne correspond a un fichier valide, accessible
    Packit 90a5c9
    	avec tous les contrôles d'accès configurés pour ce chemin. A
    Packit 90a5c9
    	cette fin, une sous-requête effectue la vérification, et vous
    Packit 90a5c9
    	devez utiliser ce drapeau avec soin car il peut impacter les
    Packit 90a5c9
    	performances de votre serveur !
    Packit 90a5c9
    -U
    Packit 90a5c9
            Vrai si la chaîne correspond a une URL valide, accessible
    Packit 90a5c9
    	avec tous les contrôles d'accès configurés pour ce chemin. A
    Packit 90a5c9
    	cette fin, une sous-requête effectue la vérification, et vous
    Packit 90a5c9
    	devez utiliser ce drapeau avec soin car il peut impacter les
    Packit 90a5c9
    	performances de votre serveur !
    Packit 90a5c9
    -A
    Packit 90a5c9
            Alias pour -U
    Packit 90a5c9
    -n
    Packit 90a5c9
            Vrai si la chaîne n'est pas vide
    Packit 90a5c9
    -z
    Packit 90a5c9
            Vrai si la chaîne est vide
    Packit 90a5c9
    -T
    Packit 90a5c9
            Faux si la chaîne est vide, "0",
    Packit 90a5c9
    	"off", "false", ou "no"
    Packit 90a5c9
    	(insensibilité à la casse). Vrai dans le cas contraire.
    Packit 90a5c9
    -R
    Packit 90a5c9
            Idem "%{REMOTE_ADDR} -ipmatch ...", en plus
    Packit 90a5c9
    	efficace
    Packit 90a5c9
            
    Packit 90a5c9
    Packit 90a5c9
    Packit 90a5c9
        

    Les opérateurs marqués comme "restreints" ne sont pas disponibles

    Packit 90a5c9
        avec certains modules comme mod_include.

    Packit 90a5c9
    Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    Fonctions

    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        

    Normalement, les fonctions dont la valeur est une chaîne acceptent une chaîne

    Packit 90a5c9
        comme argument et renvoient une chaîne. Les noms de fonctions sont
    Packit 90a5c9
        insensibles à la casse. Les modules peuvent fournir des fonctions
    Packit 90a5c9
        supplémentaires.

    Packit 90a5c9
    Packit 90a5c9
        
    NomDescriptionNotes particulières
    Packit 90a5c9
    req, http
    Packit 90a5c9
            Lit l'en-tête de requête HTTP ; les noms
    Packit 90a5c9
    	d'en-tête correspondants peuvent être ajoutés
    Packit 90a5c9
    	à l'en-tête Vary,
    Packit 90a5c9
    	voir ci-dessous
    Packit 90a5c9
    req_novary
    Packit 90a5c9
            Identique à req, mais aucun nom d'en-tête n'est
    Packit 90a5c9
    	ajouté à l'en-tête Vary
    Packit 90a5c9
    resp
    Packit 90a5c9
            Lit l'en-tête de réponse HTTP (La plupart des en-têtes de la réponse
    Packit 90a5c9
    	ne seront pas encore définis pendant le traitement de la directive
    Packit 90a5c9
    	<If>)
    Packit 90a5c9
    reqenv
    Packit 90a5c9
            Recherche une variable d'environnement de requête (on
    Packit 90a5c9
    	peut aussi utiliser le raccourci v).
    Packit 90a5c9
    	
    Packit 90a5c9
    	ordonnancement
    Packit 90a5c9
    osenv
    Packit 90a5c9
            Recherche une variable d'environnement du système
    Packit 90a5c9
    	d'exploitation
    Packit 90a5c9
    note
    Packit 90a5c9
            Recherche une note de requêteordonnancement
    Packit 90a5c9
    env
    Packit 90a5c9
            Renvoie le premier résultat positif de note,
    Packit 90a5c9
    	reqenv, osenvordonnancement
    Packit 90a5c9
    tolower
    Packit 90a5c9
            Convertit une chaîne en minuscules
    Packit 90a5c9
    toupper
    Packit 90a5c9
            Convertit une chaîne en majuscules
    Packit 90a5c9
    escape
    Packit 90a5c9
            Echappe les caractères spéciaux en codage hexadécimal
    Packit 90a5c9
    unescape
    Packit 90a5c9
            "Déséchappe" les chaînes codées
    Packit 90a5c9
    	en hexadécimal, en ne gardant encodés que les slashes; renvoie la chaîne vide
    Packit 90a5c9
    	si la séquence %00 est rencontrée
    Packit 90a5c9
    base64
    Packit 90a5c9
            Encode la chaîne en base64
    Packit 90a5c9
    unbase64
    Packit 90a5c9
            Décode les chaînes codées en base64, renvoie une chaîne
    Packit 90a5c9
    	tronquée si le caractère 0x00 est rencontré
    Packit 90a5c9
    md5
    Packit 90a5c9
            Génère un hash de la chaîne en utilisant MD5, puis code le
    Packit 90a5c9
    	hash obtenu en hexadécimal
    Packit 90a5c9
    sha1
    Packit 90a5c9
            Génère un hash de la chaîne en utilisant SHA1, puis encode
    Packit 90a5c9
    	le hash obtenu en hexadécimal
    Packit 90a5c9
    file
    Packit 90a5c9
            Lit le contenu d'un fichier(fins de lignes incluses, si
    Packit 90a5c9
    	elles existent)limité
    Packit 90a5c9
    filemod
    Packit 90a5c9
            Renvoie la date de dernière modification d'un fichier (ou 0 si le
    Packit 90a5c9
    	fichier n'existe pas ou n'est pas un fichier régulier)limité
    Packit 90a5c9
    filesize
    Packit 90a5c9
            Renvoie la taille d'un fichier (ou 0 si le fichier n'existe
    Packit 90a5c9
    	pas ou ne correspond pas à un fichier régulier)limité
    Packit 90a5c9
    Packit 90a5c9
    Packit 90a5c9
        

    Les fonctions marquées comme "limité" dans la dernière colonne ne sont

    Packit 90a5c9
        pas disponibles avec certains modules comme
    Packit 90a5c9
        mod_include.

    Packit 90a5c9
    Packit 90a5c9
        

    Les fonctions marquées comme "ordonnancement" dans la dernière colonne

    Packit 90a5c9
        nécessitent une attention particulière pour l'ordonnancement des différents
    Packit 90a5c9
        composants du serveur, spécialement lorsque la fonction est utilisée au sein
    Packit 90a5c9
        d'une directive <If> qui est
    Packit 90a5c9
        évaluée relativement tôt.

    Packit 90a5c9
        
    Packit 90a5c9
        

    Ordonnancement des variables d'environnement

    Packit 90a5c9
        Lorsque des variables d'environnement sont évaluées au sein d'une directive
    Packit 90a5c9
        <If>, il est important de tenir
    Packit 90a5c9
        compte du moment où cette évaluation intervient dans le traitement de la
    Packit 90a5c9
        requête. Par exemple, toute directive définie en dehors d'un contexte de
    Packit 90a5c9
        serveur virtuel (directory, location, htaccess) aura peu de chance d'être
    Packit 90a5c9
        déjà exécutée. Ainsi la directive SetEnvIf est une directive qui s'exécute
    Packit 90a5c9
        avant cette évaluation.
    Packit 90a5c9
        
    Packit 90a5c9
        
    Packit 90a5c9
        Lorsque reqenv est utilisé en dehors de la directive
    Packit 90a5c9
        <If>, l'évaluation survient en
    Packit 90a5c9
        général plus tard, mais le moment exact dépend de la directive dans laquelle
    Packit 90a5c9
        l'expression a été utilisée.
    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        

    Lorsque les fonctions req ou http sont

    Packit 90a5c9
        utilisées, le nom d'en-tête sera automatiquement ajouté à l'en-tête
    Packit 90a5c9
        Vary de la réponse HTTP, sauf spécification contraire pour la
    Packit 90a5c9
        directive qui accepte l'expression comme paramètre. La
    Packit 90a5c9
        fonction req_novary permet d'empêcher l'ajout de noms
    Packit 90a5c9
        d'en-têtes à l'en-tête Vary.

    Packit 90a5c9
    Packit 90a5c9
        

    En plus des fonctions dont la valeur est une chaîne, il existe

    Packit 90a5c9
        aussi des fonctions dont la valeur est une liste, qui acceptent une
    Packit 90a5c9
        chaîne comme argument, et renvoient une liste de mots, autrement dit
    Packit 90a5c9
        une liste de chaînes. La liste de mot peut être utilisée avec
    Packit 90a5c9
        l'opérateur spécial -in. Les noms de fonctions sont
    Packit 90a5c9
        insensibles à la casse. Les modules peuvent fournir des fonctions
    Packit 90a5c9
        supplémentaires.

    Packit 90a5c9
    Packit 90a5c9
        

    Il n'existe pas de fonctions internes dont la valeur est une

    Packit 90a5c9
        liste. Le module mod_ssl fournit la fonction
    Packit 90a5c9
        PeerExtList. Voir la description de la directive
    Packit 90a5c9
        SSLRequire pour plus de
    Packit 90a5c9
        détails (notez que la fonction PeerExtList peut aussi
    Packit 90a5c9
        être utilisée en dehors de la directive SSLRequire).

    Packit 90a5c9
    Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    Exemples d'expressions

    Packit 90a5c9
        
    Packit 90a5c9
    	
    Packit 90a5c9
    	

    Les exemples suivants montent comment utiliser les

    Packit 90a5c9
    	expressions pour évaluer les requêtes :

    Packit 90a5c9
    	
    Packit 90a5c9
    	
    # Comparer le nom d'hôte avec example.com et rediriger vers
    Packit 90a5c9
    # www.example.com si le nom d'hôte correspond
    Packit 90a5c9
    <If "%{HTTP_HOST} == 'example.com'">
    Packit 90a5c9
        Redirect permanent "/" "http://www.example.com/"
    Packit 90a5c9
    </If>
    Packit 90a5c9
    Packit 90a5c9
    # Forcer le type text/plain si un fichier fait l'objet d'une
    Packit 90a5c9
    # requête dont la chaîne de paramètres contient 'forcetext'
    Packit 90a5c9
    <If "%{QUERY_STRING} =~ /forcetext/">
    Packit 90a5c9
        ForceType text/plain
    Packit 90a5c9
    </If>
    Packit 90a5c9
    Packit 90a5c9
    # N'autoriser l'accès à ce contenu que pendant les heures de
    Packit 90a5c9
    # travail
    Packit 90a5c9
    <Directory "/foo/bar/business">
    Packit 90a5c9
         Require expr %{TIME_HOUR} -gt 9 && %{TIME_HOUR} -lt 17
    Packit 90a5c9
    </Directory>
    Packit 90a5c9
    Packit 90a5c9
    # Vérifie si un en-tête HTTP correspond à une des valeurs d'une liste
    Packit 90a5c9
    <If "%{HTTP:X-example-header} in { 'foo', 'bar', 'baz' }">
    Packit 90a5c9
        La définition de l'en-tête correspond à une des valeurs recherchées
    Packit 90a5c9
    </If>
    Packit 90a5c9
    Packit 90a5c9
    # Recherche la valeur d'une expression rationnelle dans une variable
    Packit 90a5c9
    # d'environnement, et renvoie la négation du résultat.
    Packit 90a5c9
    <If "! reqenv('REDIRECT_FOO') =~ /bar/">
    Packit 90a5c9
        La condition est vérifiée
    Packit 90a5c9
    </If>
    Packit 90a5c9
    Packit 90a5c9
    # Vérifie le résultat de la recherche d'une correspondance d'URI dans un
    Packit 90a5c9
    # contexte de répertoire avec l'option -f
    Packit 90a5c9
    <Directory "/var/www">
    Packit 90a5c9
        AddEncoding x-gzip gz
    Packit 90a5c9
    <If "-f '%{REQUEST_FILENAME}.unzipme' && ! %{HTTP:Accept-Encoding} =~ /gzip/">
    Packit 90a5c9
          SetOutputFilter INFLATE
    Packit 90a5c9
    </If>
    Packit 90a5c9
    </Directory>
    Packit 90a5c9
    Packit 90a5c9
    # Vérifie l'adresse IP du client
    Packit 90a5c9
    <If "-R '192.168.1.0/24'">
    Packit 90a5c9
        Header set matched true
    Packit 90a5c9
    </If>
    Packit 90a5c9
    Packit 90a5c9
    # Exemple de fonction dans un contexte booléen
    Packit 90a5c9
    <If "md5('foo') == 'acbd18db4cc2f85cedef654fccc4a4d8'">
    Packit 90a5c9
      Header set checksum-matched true
    Packit 90a5c9
    </If>
    Packit 90a5c9
    Packit 90a5c9
    # Function example in string context
    Packit 90a5c9
    Header set foo-checksum "expr=%{md5:foo}"
    Packit 90a5c9
    Packit 90a5c9
    # L'exemple suivant retarde l'évaluation de la clause de condition par rapport à
    Packit 90a5c9
    # <If>
    Packit 90a5c9
    Header always set CustomHeader my-value "expr=%{REQUEST_URI} =~ m#^/special_path\.php$#"
    Packit 90a5c9
    Packit 90a5c9
    # Journalisation conditionnelle
    Packit 90a5c9
    CustomLog logs/access-errors.log common "expr=%{REQUEST_STATUS} >= 400"
    Packit 90a5c9
    CustomLog logs/access-errors-specific.log common "expr=%{REQUEST_STATUS} -in {'405','410'}"
    Packit 90a5c9
    Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    Autres

    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        
    NomAlternative Description
    Packit 90a5c9
    -in
    Packit 90a5c9
            in
    Packit 90a5c9
            chaîne contenue dans une liste de mots
    Packit 90a5c9
    /regexp/
    Packit 90a5c9
            m#regexp#
    Packit 90a5c9
            Expression rationnelle (la seconde forme permet de spécifier
    Packit 90a5c9
    	des délimiteurs autres que /)
    Packit 90a5c9
    /regexp/i
    Packit 90a5c9
            m#regexp#i
    Packit 90a5c9
            Expression rationnelle insensible à la casse
    Packit 90a5c9
    $0 ... $9
    Packit 90a5c9
            
    Packit 90a5c9
            Références arrières dans les expressions rationnelles
    Packit 90a5c9
    Packit 90a5c9
    Packit 90a5c9
        

    Références arrières dans les expressions rationnelles

    Packit 90a5c9
            
    Packit 90a5c9
            

    Les chaînes $0 ... $9 permettent de

    Packit 90a5c9
    	référencer les groupes de capture en provenance d'expressions
    Packit 90a5c9
    	rationnelles précédemment exécutées et mises en correspondance avec
    Packit 90a5c9
    	succès. Elles ne peuvent normalement être utilisées que dans la
    Packit 90a5c9
    	même expression que celle mise en correspondance, mais certains
    Packit 90a5c9
    	modules permettent de les utiliser de manière spéciale.

    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    Comparaison avec SSLRequire

    Packit 90a5c9
        
    Packit 90a5c9
        

    La syntaxe ap_expr consiste principalement en une

    Packit 90a5c9
        surcouche de la syntaxe de la directive obsolète SSLRequire. Vous pouvez consulter la
    Packit 90a5c9
        liste de leur différences dans la documentation de la directive
    Packit 90a5c9
        SSLRequire.

    Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    Historique de version

    Packit 90a5c9
        
    Packit 90a5c9
        

    La fonction req_novary est

    Packit 90a5c9
        disponible à partir de la version 2.4.4 du serveur HTTP Apache.

    Packit 90a5c9
    Packit 90a5c9
    Packit 90a5c9

    Langues Disponibles:  en  |

    Packit 90a5c9
     fr 

    Packit 90a5c9
    top

    Commentaires

    Notice:
    This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.
    Packit 90a5c9
    <script type="text/javascript">
    Packit 90a5c9
    var comments_shortname = 'httpd';
    Packit 90a5c9
    var comments_identifier = 'http://httpd.apache.org/docs/2.4/expr.html';
    Packit 90a5c9
    (function(w, d) {
    Packit 90a5c9
        if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
    Packit 90a5c9
            d.write('
    <\/div>');
    Packit 90a5c9
            var s = d.createElement('script');
    Packit 90a5c9
            s.type = 'text/javascript';
    Packit 90a5c9
            s.async = true;
    Packit 90a5c9
            s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
    Packit 90a5c9
            (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
    Packit 90a5c9
        }
    Packit 90a5c9
        else { 
    Packit 90a5c9
            d.write('
    Comments are disabled for this page at the moment.<\/div>');
    Packit 90a5c9
        }
    Packit 90a5c9
    })(window, document);
    Packit 90a5c9
    //--></script>
    Packit 90a5c9

    Copyright 2018 The Apache Software Foundation.
    Autorisé sous Apache License, Version 2.0.

    Packit 90a5c9

    Modules | Directives | FAQ | Glossaire | Plan du site

    <script type="text/javascript">
    Packit 90a5c9
    if (typeof(prettyPrint) !== 'undefined') {
    Packit 90a5c9
        prettyPrint();
    Packit 90a5c9
    }
    Packit 90a5c9
    //--></script>
    Packit 90a5c9
    </body></html>