From 6beeb1b708550be0d4a53b272283e17e5e35fe17 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 17:01:30 +0200 Subject: Adding upstream version 2.4.57. Signed-off-by: Daniel Baumann --- docs/manual/expr.html.fr.utf8 | 693 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 693 insertions(+) create mode 100644 docs/manual/expr.html.fr.utf8 (limited to 'docs/manual/expr.html.fr.utf8') diff --git a/docs/manual/expr.html.fr.utf8 b/docs/manual/expr.html.fr.utf8 new file mode 100644 index 0000000..6800023 --- /dev/null +++ b/docs/manual/expr.html.fr.utf8 @@ -0,0 +1,693 @@ + + + + + +Les expressions dans le serveur HTTP Apache - Serveur HTTP Apache Version 2.4 + + + + + + + +
<-
+

Les expressions dans le serveur HTTP Apache

+
+

Langues Disponibles:  en  | + fr 

+
+ +

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

+

Le type d'expression ap_expr est appelé à remplacer la + plupart des autres types d'expressions dans HTTPD. Par exemple, la + directive obsolète SSLRequire peut être remplacée par la + directive Require + expr. +

+
+ +
top
+
+

Syntaxe en Forme de Backus-Naur

+ +

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

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

Variables

+ + +

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

+ +

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

+ + + + + + + + + +
Nom
HTTP_ACCEPT
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
HTTP_REFERER
HTTP_USER_AGENT
+ +

Autres variables liées aux requêtes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NomDescription
REQUEST_METHODLa méthode HTTP de la requête entrante (par exemple + GET)
REQUEST_SCHEMELe protocole associé à l'URI de la requête
REQUEST_URILa partie chemin de l'URI de la requête
DOCUMENT_URIIdem REQUEST_URI
REQUEST_FILENAMELe chemin complet dans le système de fichiers local du + fichier ou du script correspondant à la requête, si le serveur + l'a dèjà déterminé à l'instant où REQUEST_FILENAME + est référencée. Dans le cas contraire, comme dans un + contexte de serveur virtuel, même valeur que REQUEST_URI
SCRIPT_FILENAMEIdentique à REQUEST_FILENAME
LAST_MODIFIEDLa date et heure de dernière modification du fichier au + format 20101231235959, si elle est déjà connue du + serveur au moment où LAST_MODIFIED est référencé. +
SCRIPT_USERLe nom d'utilisateur du propriétaire du script.
SCRIPT_GROUPLe nom du groupe auquel appartient le script.
PATH_INFOL'information relative au nom de chemin située en fin, voir + la directive AcceptPathInfo
QUERY_STRINGLa chaîne de paramètres de la requête courante
IS_SUBREQ"true" si la requête courante est une + sous-requête, "false" dans le cas contraire
THE_REQUESTLa requête complète (par exemple "GET /index.html + HTTP/1.1")
REMOTE_ADDRL'adresse IP de l'hôte distant
REMOTE_PORTLe port de l'hôte distant (versions 2.4.26 et supérieures)
REMOTE_HOSTLe nom d'hôte de l'hôte distant
REMOTE_USERLe nom de l'utilisateur authentifié, s'il existe (non + disponible à l'intérieur d'un bloc <If>)
REMOTE_IDENTLe nom de l'utilisateur défini par mod_ident
SERVER_NAMELa valeur de la directive ServerName du serveur virtuel courant
SERVER_PORTLe port associé au serveur virtuel courant ; voir la + directive ServerName
SERVER_ADMINLa valeur de la directive ServerAdmin du serveur virtuel courant
SERVER_PROTOCOLLe protocole utilisé par la requête
DOCUMENT_ROOTLa valeur de la directive DocumentRoot du serveur virtuel + courant
AUTH_TYPELa valeur de la directive AuthType (par exemple + "basic")
CONTENT_TYPELe type de contenu de la réponse (non + disponible à l'intérieur d'un bloc <If>)
HANDLERLe nom du gestionnaire qui a + généré la réponse
HTTP2"on" si la requête utilise http/2, + "off" dans le cas contraire
HTTPS"on" si la requête utilise https, + "off" dans le cas contraire
IPV6"on" si la connexion utilise IPv6, + "off" dans le cas contraire
REQUEST_STATUSLe code d'erreur HTTP de la requête (non + disponible à l'intérieur d'un bloc <If>)
REQUEST_LOG_IDL'identifiant du message d'erreur associé à la requête (voir + la directive ErrorLogFormat)
CONN_LOG_IDL'identifiant du message d'erreur associé à la connexion + (voir la directive ErrorLogFormat)
CONN_REMOTE_ADDRL'adresse IP du correspondant pour la connexion (voir le module + mod_remoteip)
CONTEXT_PREFIX
CONTEXT_DOCUMENT_ROOT
+ +

Variables diverses

+ + + + + + + + + + + + + + + + + + + + + + +
NomDescription
TIME_YEARL'année courante (par exemple 2010)
TIME_MONLe mois courant (01, ..., 12)
TIME_DAYLe jour courant dans le mois (01, ...)
TIME_HOURLes heures de la date courante (00, ..., + 23)
TIME_MINLes minutes de la date courante
TIME_SECLes secondes de la date courante
TIME_WDAYLe jour de la semaine (à partir de 0 pour + dimanche)
TIMELa date et heure au format 20101231235959
SERVER_SOFTWARELa chaîne contenant la version du serveur
API_VERSIONLa date de la version de l'API (module magic number)
+ +

Certains modules, comme mod_ssl, définissent des + variables supplémentaires.

+ +
top
+
+

Opérateurs binaires

+ + +

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

+ +

Opérateurs de comparaison

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NomAlternative Description
===Egalité de chaînes
!= + Inégalité de chaînes
< + Chaîne inférieure à
<= + Chaîne inférieure ou égale à
> + Chaîne supérieure à
>= + Chaîne supérieure ou égale à
=~ + La chaîne correspond à l'expression rationnelle
!~ + La chaîne ne correspond pas à l'expression rationnelle
-eqeqEgalité d'entiers
-neneInégalité d'entiers
-ltltEntier inférieur à
-leleEntier inférieur ou égal à
-gtgtEntier supérieur à
-gegeEntier supérieur ou égal à
+ + +

Autres opérateurs binaires

+ + + + + + + + + + + +
NomDescription
-ipmatchL'adresse IP correspond à adresse/masque
-strmatchla chaîne de gauche correspond au modèle constitué par la + chaîne de droite (contenant des caractères génériques *, ?, [])
-strcmatchidem -strmatch, mais insensible à la casse
-fnmatchidem -strmatch, mais les slashes ne sont pas + pris en compte par les caractères génériques
+ + +
top
+
+

Opérateurs unaires

+ + +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NomDescriptionRemarques particulières
-dL'argument est traité comme un nom de fichier. + Vrai si le fichier existe et correspond à un + répertoireoui
-eL'argument est traité comme un nom de fichier. Vrai si le + fichier (ou dir ou special) existeoui
-fL'argument est traité comme un nom de fichier. Vrai si le + fichier existe et correspond à un fichier + régulieroui
-sL'argument est traité comme un nom de fichier. Vrai si le + fichier existe et n'est pas videoui
-LL'argument est traité comme un nom de fichier. Vrai si le + fichier existe et correspond à un lien + symboliqueoui
-hL'argument est traité comme un nom de fichier. Vrai si le + fichier existe et correspond à un lien symbolique + (identique à -L)oui
-FVrai si la chaîne correspond a un fichier valide, accessible + avec tous les contrôles d'accès configurés pour ce chemin. A + cette fin, une sous-requête effectue la vérification, et vous + devez utiliser ce drapeau avec soin car il peut impacter les + performances de votre serveur !
-UVrai si la chaîne correspond a une URL valide, accessible + avec tous les contrôles d'accès configurés pour ce chemin. A + cette fin, une sous-requête effectue la vérification, et vous + devez utiliser ce drapeau avec soin car il peut impacter les + performances de votre serveur !
-AAlias pour -U
-nVrai si la chaîne n'est pas vide
-zVrai si la chaîne est vide
-TFaux si la chaîne est vide, "0", + "off", "false", ou "no" + (insensibilité à la casse). Vrai dans le cas contraire.
-RIdem "%{REMOTE_ADDR} -ipmatch ...", en plus + efficace +
+ +

Les opérateurs marqués comme "restreints" ne sont pas disponibles + avec certains modules comme mod_include.

+ +
top
+
+

Fonctions

+ + +

Normalement, les fonctions dont la valeur est une chaîne acceptent une chaîne + comme argument et renvoient une chaîne. Les noms de fonctions sont + insensibles à la casse. Les modules peuvent fournir des fonctions + supplémentaires.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NomDescriptionNotes particulières
req, httpLit l'en-tête de requête HTTP ; les noms + d'en-tête correspondants peuvent être ajoutés + à l'en-tête Vary, + voir ci-dessous
req_novaryIdentique à req, mais aucun nom d'en-tête n'est + ajouté à l'en-tête Vary
respLit l'en-tête de réponse HTTP (La plupart des en-têtes de la réponse + ne seront pas encore définis pendant le traitement de la directive + <If>)
reqenvRecherche une variable d'environnement de requête (on + peut aussi utiliser le raccourci v). + ordonnancement
osenvRecherche une variable d'environnement du système + d'exploitation
noteRecherche une note de requêteordonnancement
envRenvoie le premier résultat positif de note, + reqenv, osenvordonnancement
tolowerConvertit une chaîne en minuscules
toupperConvertit une chaîne en majuscules
escapeEchappe les caractères spéciaux en codage hexadécimal
unescape"Déséchappe" les chaînes codées + en hexadécimal, en ne gardant encodés que les slashes; renvoie la chaîne vide + si la séquence %00 est rencontrée
base64Encode la chaîne en base64
unbase64Décode les chaînes codées en base64, renvoie une chaîne + tronquée si le caractère 0x00 est rencontré
md5Génère un hash de la chaîne en utilisant MD5, puis code le + hash obtenu en hexadécimal
sha1Génère un hash de la chaîne en utilisant SHA1, puis encode + le hash obtenu en hexadécimal
fileLit le contenu d'un fichier(fins de lignes incluses, si + elles existent)limité
filesizeRenvoie la taille d'un fichier (ou 0 si le fichier n'existe + pas ou ne correspond pas à un fichier régulier)limité
ldapEchappe les caractères selon la RFC4514 (Echappement des + noms distinctifs LDAP - DN) et la RFC4515 (Echappement des + filtres LDAP).
+ Disponible à partir de la version 2.4.53 du serveur HTTP + Apache.
+ +

Les fonctions marquées comme "limité" dans la dernière colonne ne sont + pas disponibles avec certains modules comme + mod_include.

+ +

Les fonctions marquées comme "ordonnancement" dans la dernière colonne + nécessitent une attention particulière pour l'ordonnancement des différents + composants du serveur, spécialement lorsque la fonction est utilisée au sein + d'une directive <If> qui est + évaluée relativement tôt.

+
+

Ordonnancement des variables d'environnement

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

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

+ +

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

+ +

Il n'existe pas de fonctions internes dont la valeur est une + liste. Le module mod_ssl fournit la fonction + PeerExtList. Voir la description de la directive + SSLRequire pour plus de + détails (notez que la fonction PeerExtList peut aussi + être utilisée en dehors de la directive SSLRequire).

+ +
top
+
+

Exemples d'expressions

+ + +

Les exemples suivants montent comment utiliser les + expressions pour évaluer les requêtes :

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

Autres

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

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

+ +

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

+ + +
top
+
+

Comparaison avec SSLRequire

+ +

La syntaxe ap_expr consiste principalement en une + surcouche de la syntaxe de la directive obsolète SSLRequire. Vous pouvez consulter la + liste de leur différences dans la documentation de la directive + SSLRequire.

+
top
+
+

Historique de version

+ +

La fonction req_novary est + disponible à partir de la version 2.4.4 du serveur HTTP Apache.

+
+
+

Langues Disponibles:  en  | + fr 

+
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 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 Libera.chat, or sent to our mailing lists.
+
+ \ No newline at end of file -- cgit v1.2.3