Ce module est implémenté dans le fichier mod_setenvif.c
, et est compilé par défaut. Il permet de définir des variables d'environnement sur la base d'attributs de la requête.
Le module mod_setenvif
vous permet de définir des variables d'environnement suivant différents aspects de la requête détectés au moyen d'expressions régulières. Ces variables d'environnement pourront être utilisées dans d'autres parties du serveur pour décider des actions à exécuter.
La directive BrowserMatch définit des variables d'environnement sur la base du contenu du champ d'en-tête HTTP User-Agent:
de la requête. Le premier argument est une rexpression régulière POSIX.2 étendue (similaire à celles utilisées pour les fonctions de la famille egrep()
). Le reste des arguments donne la liste des variables à définir, aisni que des valeurs optionnelles pour les initialiser. Les formes acceptées pour ces variables sont :
!
nomVariable, ou
La première forme définit la variable et lui attribue une valeur initiale de "1". La seconde supprimera une variable déjà définie auparavent, la troisième définira la variable au besoin l'initialisera à la valeur mentionnée. Si le contenu d'un champ User-Agent:
correspond à plusieurs directives, les variables d'environnement seront combinées, et seront crées ou modifiées en fonction de l'ordre dans lequel les directives qui les manipulent apparaissent dans les fichiers de configuration. Ainsi des directives postérieures peuvent surcharger l'action de directives antérieures.
Par exemple :
BrowserMatch ^Mozilla forms jpeg=yes browser=netscape
BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript
BrowserMatch MSIE !javascript
Notez que lexpression régulière est appliquée en tenant compte de la casse. Pour un test sans casse, voir la directive BrowserMatchNoCase.
Les directives BrowserMatch et BrowserMatchNoCase sont des cas particuliers des directives SetEnvIf et SetEnvIfNoCase. Les deux lignes suivantes ont exactement le même effet :
BrowserMatchNoCase Robot is_a_robot
SetEnvIfNoCase User-Agent Robot is_a_robot
La directive BrowserMatchNoCase est sémantiquement identique à la directive BrowserMatch. Elle applique cependant l'expression régulière sans tenir compte de la casse. Par exemple :
BrowserMatchNoCase mac platform=macintosh
BrowserMatchNoCase win platform=windows
Les directives BrowserMatch et BrowserMatchNoCase sont des cas particuliers des directives SetEnvIf et SetEnvIfNoCase. Les deux lignes suivantes ont le même effet :
BrowserMatchNoCase Robot is_a_robot
SetEnvIfNoCase User-Agent Robot is_a_robot
La directive SetEnvIf permet de définir plus généralement des variables d'environnement sur des attributs de la requête. Ces attributs peuvent être les valeurs de divers champs d'en-tête HTTP de la requête (voir RFC2068 pour plus d'informations sur ces champs ; vous pouvez aussi consulter la version française de la
La première ligne définit la variable d'environnement object_is_image si la requête portait sur un fichier graphique, et la seconde une variable intra_site_referral si la page contenant le lien activé faisait partie de l'espace Intranet, dans le site
La directive SetEnvIfNoCase est sémantiquement identique à la directive SetEnvIf. Elle applique cependant l'expression régulière sans tenir compte de la casse.
Par exemple :
Ceci définira la variable d'environnement site à la valeur www.mondomaine.com
.
Directive : SetEnvIfNoCase
Syntaxe : SetEnvIfNoCase attribut regex envar[=valeur] [...]
Défaut : Aucun
Contexte : configuration serveur
Surcharge : Aucune
Statut : Base
Module : mod_setenvif
Compatibilité : SetEnvIfNoCase n'est disponible qu'à partir de la version 1.3 d'Apache.
SetEnvIfNoCase Host Apache\.Org site=apache
apache
si la requête HTTP contient un champ d'en-tête Host:
contient Apache.Org
, apache.org
, ou toute autre mélange de casse haute et basse.
Apache HTTP Server Version 1.3
Adaptation française © Valery Fremaux / EISTI 1998