<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision: 1915443 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<modulesynopsis metafile="mod_setenvif.xml.meta">

<name>mod_setenvif</name>
<description>Permet de définir des variables d'environnement en fonction
de certaines caractéristiques de la requête</description>
<status>Base</status>
<sourcefile>mod_setenvif.c</sourcefile>
<identifier>setenvif_module</identifier>

<summary>

    <p>Le module <module>mod_setenvif</module> vous permet de définir
    des variables d'environnement internes de manière conditionnelle en fonction
    de critères que vous pouvez spécifier. Ces variables d'environnement
    peuvent être utilisées par d'autres parties du serveur pour prendre
    des décisions quant aux actions à entreprendre, et pour déterminer
    si les scripts CGI et les pages SSI doivent pouvoir y accéder.</p>

    <p>Les directives sont interprétées selon l'ordre dans lequel elles
    apparaîssent dans les fichiers de configuration. Ainsi, des
    séquences plus complexes peuvent être utilisées, comme dans cet
    exemple qui définit netscape si le navigateur est Mozilla et non
    MSIE.</p>

<highlight language="config">
BrowserMatch ^Mozilla netscape
BrowserMatch MSIE !netscape
</highlight>

   <p>Lorsque le serveur cherche un chemin via une <glossary
   ref="subrequest">sous-requête</glossary> interne (par exemple la
   recherche d'un <directive
   module="mod_dir">DirectoryIndex</directive>), ou lorsqu'il génère un
   listing du contenu d'un répertoire via le module
   <module>mod_autoindex</module>, la sous-requête n'hérite pas des
   variables d'environnement spécifiques à la requête. En outre, à cause
   des phases de l'API auxquelles <module>mod_setenvif</module> prend
   part, les directives <directive
   module="mod_setenvif">SetEnvIf</directive> ne sont pas évaluées
   séparément dans la sous-requête.</p>

   <p>Une expression rationnelle ne nécessite des guillemets que si elle
   contient des espaces non échappées et dans ce cas, les guillemets simples ou
   doubles sont équivalents. À la différence de <module>mod_rewrite</module>,
   <module>mod_setenvif</module> élimine tous les autres anti-slashes lorsqu'il
   interprète l'expression ; ainsi, <code>\\</code> nécessite <code>\\\</code>
   et <code>\\\</code> nécessite <code>\\\\\</code>.</p>

</summary>

<seealso><a href="../env.html">Les variables d'environnement et le
serveur HTTP Apache</a></seealso>

<directivesynopsis>
<name>BrowserMatch</name>
<description>Définit des variables d'environnement en fonction du
contenu de l'en-tête HTTP User-Agent</description>
<syntax>BrowserMatch <em>regex [!]env-variable</em>[=<em>valeur</em>]
[[!]<em>env-variable</em>[=<em>valeur</em>]] ...</syntax>
<contextlist><context>server config</context>
<context>virtual host</context><context>directory</context>
<context>.htaccess</context></contextlist>
<override>FileInfo</override>

<usage>
  <p>La directive <directive>BrowserMatch</directive> est un cas
  particulier de la directive <directive
  module="mod_setenvif">SetEnvIf</directive>, qui définit des variables
  d'environnement en fonction du contenu de l'en-tête de requête HTTP
  <code>User-Agent</code>. Les deux lignes suivantes produisent le même
  effet :</p>
<highlight language="config">
BrowserMatch Robot is_a_robot
SetEnvIf User-Agent Robot is_a_robot
</highlight>

    <p>Quelques exemples supplémentaires :</p>
<highlight language="config">
BrowserMatch ^Mozilla forms jpeg=yes browser=netscape
BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript
BrowserMatch MSIE !javascript
</highlight>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>BrowserMatchNoCase</name>
<description>Définit des variables d'environnement en fonction du
contenu de l'en-tête HTTP User-Agent sans tenir compte de la
casse</description>
<syntax>BrowserMatchNoCase  <em>regex [!]env-variable</em>[=<em>valeur</em>]
    [[!]<em>env-variable</em>[=<em>valeur</em>]] ...</syntax>
<contextlist><context>server config</context>
<context>virtual host</context><context>directory</context>
<context>.htaccess</context></contextlist>
<override>FileInfo</override>

<usage>

    <p>La directive <directive>BrowserMatchNoCase</directive> est
    identique sur le plan sémantique à la directive <directive
    module="mod_setenvif">BrowserMatch</directive>. Elle permet
    cependant une comparaison insensible à la casse. Par exemple :</p>
<highlight language="config">
BrowserMatchNoCase mac platform=macintosh
BrowserMatchNoCase win platform=windows
</highlight>

    <p>Les directives <directive>BrowserMatch</directive> et
    <directive>BrowserMatchNoCase</directive> sont des cas particuliers
    des directives <directive module="mod_setenvif">SetEnvIf</directive>
    et <directive module="mod_setenvif">SetEnvIfNoCase</directive>.
    Ainsi, les deux lignes suivantes produisent le même effet :</p>
<highlight language="config">
BrowserMatchNoCase Robot is_a_robot
SetEnvIfNoCase User-Agent Robot is_a_robot
</highlight>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>SetEnvIf</name>
<description>Définit des variables d'environnement en fonction des
attributs de la requête</description>
<syntax>SetEnvIf <em>attribut
    regex [!]env-variable</em>[=<em>valeur</em>]
    [[!]<em>env-variable</em>[=<em>valeur</em>]] ...</syntax>
<contextlist><context>server config</context>
<context>virtual host</context><context>directory</context>
<context>.htaccess</context></contextlist>
<override>FileInfo</override>

<usage>
    <p>La directive <directive>SetEnvIf</directive> permet de définir
    des variables d'environnement en fonction des attributs de la
    requête. L'<em>attribut</em> spécifié comme premier argument peut
    se présenter sous l'une des formes suivantes :</p>

<ol>
<li>Un champ d'en-tête de requête HTTP (voir la <a
    href="http://www.rfc-editor.org/rfc/rfc2616.txt">RFC2616</a> pour
    plus d'information à leur propos) ; par exemple : <code>Host</code>,
    <code>User-Agent</code>, <code>Referer</code>, ou
    <code>Accept-Language</code>. Il est possible d'utiliser une
    expression rationnelle pour spécifier un jeu d'en-têtes de
    requête.</li>

<li>Une des caractéristiques de la requête suivantes :
    <ul>
      <li><code>Remote_Host</code> - le nom d'hôte (s'il est disponible)
      du client qui effectue la requête</li>

      <li><code>Remote_Addr</code> - l'adresse IP du client qui effectue
      la requête</li>

      <li><code>Server_Addr</code> - l'adresse IP du serveur qui a reçu
      la requête (uniquement à partir des versions supérieures à
      2.0.43)</li>

      <li><code>Request_Method</code> - Le nom de la méthode HTTP
      utilisée (<code>GET</code>, <code>POST</code>, <em>et
      cetera...</em>)</li>

      <li><code>Request_Protocol</code> - le nom et la version du
      protocole utilisé pour la requête (par exemple "HTTP/0.9",
      "HTTP/1.1", <em>etc...</em>)</li>

      <li><code>Request_URI</code> - la ressource demandée dans la ligne
      de requête HTTP -- en général la partie de l'URL suivant le
      protocole et le nom du serveur, sans la chaîne d'arguments. Voir
      la directive <directive
      module="mod_rewrite">RewriteCond</directive> du module
      <module>mod_rewrite</module> pour plus d'informations sur la
      manière de mettre en correspondance votre chaîne d'arguments.</li>
    </ul>
</li>

<li>Le nom d'une variable d'environnement parmi la liste de celles qui
sont associées à la requête. Ceci permet à la directive
<directive>SetEnvIf</directive> d'effectuer des tests en fonction du
résultat de comparaisons précédentes. Seules les variables
d'environnement définies par des directives
<code>SetEnvIf[NoCase]</code> précédentes sont disponibles pour
effectuer des tests de cette manière. 'Précédentes' signifie qu'elles se
trouvent à un niveau plus global de la configuration (par exemple au
niveau du serveur principal), ou plus haut chronologiquement dans le
contexte de la directive. Les variables d'environnement ne seront prises
en compte que si aucune correspondance n'a été trouvée parmi les
caractéristiques de la requête, et si <em>attribut</em> n'a pas été
spécifié sous la forme d'une expression rationnelle.</li>

</ol>

<p>Le second argument (<em>regex</em>) est une <glossary
ref="regex">expression rationnelle</glossary>. Si  <em>regex</em>
correspond à l'<em>attribut</em>, les arguments suivants sont évalués.</p>

<p>Le reste des arguments constitue les noms des variables à définir,
ainsi que les valeurs optionnelles qui doivent leur être affectées. Ils
peuvent se présenter sous les formes suivantes :</p>

    <ol>
      <li><code><em>nom-variable</em></code>, ou</li>

      <li><code>!<em>nom-variable</em></code>, ou</li>

      <li><code><em>nom-variable</em>=<em>valeur</em></code></li>
    </ol>

    <p>Dans la première forme, la valeur sera définie à "1". Dans la
    seconde forme, la variable sera supprimée si elle a été définie au
    préalable, et dans la troisième forme, la variable sera définie à la
    valeur littérale spécifiée par <code><em>valeur</em></code>. Depuis
    la version 2.0.51, Apache httpd reconnaît les occurrences de variables
    <code>$1</code>..<code>$9</code> à l'intérieur de
    <code><em>valeur</em></code>, et les remplace par les
    sous-expressions entre parenthèses correspondantes de
    <var>regex</var>. <code>$0</code> permet d'accéder à l'ensemble de la chaîne
    qui correspond à ce modèle.</p>

    <p>Si l'option <code>--early</code> est spécifiée, et si cette directive
    n'est pas dans un contexte de répertoire, cette dernière sera évaluée plus
    tôt au cours du traitement de la requête. Ceci permet d'utiliser les
    variables de sortie définies par cette directive comme variables d'entrée de
    l'option "early mode" de la directive <directive
    module="mod_headers">RequestHeader</directive>. L'option
    <code>--early</code> est disponible à partir de la version 2.5.1 du serveur
    HTTP Apache.</p>

<highlight language="config">
SetEnvIf Request_URI "\.gif$" object_is_image=gif
SetEnvIf Request_URI "\.jpg$" object_is_image=jpg
SetEnvIf Request_URI "\.xbm$" object_is_image=xbm
    
SetEnvIf Referer www\.mydomain\.example\.com intra_site_referral
    
SetEnvIf object_is_image xbm XBIT_PROCESSING=1

SetEnvIf Request_URI "\.(.*)$" EXTENSION=$1
    
SetEnvIf ^TS  ^[a-z]  HAVE_TS
</highlight>

    <p>Les trois premières lignes définissent la variable
    d'environnement <code>objet_est_une_image</code> si l'objet de la
    requête est un fichier image, et la quatrième définit la variable
    <code>intra_site_referral</code> si la page référante se trouve
    quelque part dans le site web
    <code>www.mydomain.example.com</code>.</p>

    <p>La dernière ligne définit la variable d'environnement
    <code>HAVE_TS</code> si la requête contient un en-tête dont le nom
    commence par "TS" et dont la valeur commence par tout caractère du
    jeu [a-z].</p>
</usage>

<seealso><a href="../env.html">Les variables d'environnement et le
serveur HTTP Apache</a> pour des exemples supplémentaires.
</seealso>
</directivesynopsis>

<directivesynopsis>

<name>SetEnvIfExpr</name>
<description>Définit des variables d'environnement en fonction d'une expression ap_expr</description>
<syntax>SetEnvIfExpr <em>expr
    [!]env-variable</em>[=<em>valeur</em>]
    [[!]<em>env-variable</em>[=<em>valeur</em>]] ...</syntax>
<contextlist><context>server config</context>
<context>virtual host</context><context>directory</context>
<context>.htaccess</context></contextlist>
<override>FileInfo</override>

<usage>
    <p>La directive <directive>SetEnvIfExpr</directive> permet de définir des
    variables d'environnement en fonction d'une <a
    href="../expr.html">expression</a>. Cette expression est évaluée à
    l'exécution, et les différentes variables d'environnement
    <em>env-variable</em> définies de la même manière que la directive
    <directive>SetEnvIf</directive>, y compris les références arrières.</p>

<highlight language="config">
    SetEnvIfExpr "tolower(req('X-Sendfile')) == 'd:\images\very_big.iso')" iso_delivered
    SetEnvIfExpr "tolower(req('X-Sendfile')) =~ /(.*\.iso$)/" iso-path=$1
</highlight>

    <p>Dans cet exemple, la variable d'environnement
    <code>iso_delivered</code> est définie chaque fois que notre
    application tente de l'envoyer via <code>X-Sendfile</code>.</p>

    <p>Il pourrait être plus utile de définir une variable rfc1918 si
    l'adresse IP distante est une adresse privée au sens de la RFC 1918
    :</p>

<highlight language="config">
    SetEnvIfExpr "-R '10.0.0.0/8' || -R '172.16.0.0/12' || -R '192.168.0.0/16'" rfc1918
</highlight>
</usage>

<seealso><a href="../expr.html">Les expressions dans le serveur HTTP
Apache</a>, pour une référence complète et davantage d'exemples.</seealso>
<seealso>La directive <directive module="core"
type="section">If</directive> permet d'obtenir des résultats
similaires.</seealso>
<seealso><module>mod_filter</module></seealso>
</directivesynopsis>

<directivesynopsis>
<name>SetEnvIfNoCase</name>
<description>Définit des variables d'environnement en fonction des
attributs de la requête sans tenir compte de la casse</description>
<syntax>SetEnvIfNoCase <em>attribut regex
        [!]env-variable</em>[=<em>valeur</em>]
    [[!]<em>env-variable</em>[=<em>valeur</em>]] ...</syntax>
<contextlist><context>server config</context>
<context>virtual host</context><context>directory</context>
<context>.htaccess</context></contextlist>
<override>FileInfo</override>

<usage>

    <p>La directive <directive>SetEnvIfNoCase</directive> est identique
    d'un point de vue sémantique à la directive <directive
    module="mod_setenvif">SetEnvIf</directive>, et ne s'en distingue que
    par le fait que la comparaison des expressions rationnelles est
    effectuée sans tenir compte de la casse. Par exemple :</p>
<highlight language="config">
   SetEnvIfNoCase Host Example\.Org site=example
</highlight>

    <p>Cette ligne va définir la variable d'environnement
    <code>site</code> avec la valeur "<code>example</code>" si le champ
    d'en-tête de requête HTTP <code>Host:</code> est présent et contient
    <code>Example.Org</code>, <code>example.org</code>, ou une autre
    combinaison des mêmes caractères, sans tenir compte de la casse.</p>
</usage>
</directivesynopsis>
</modulesynopsis>
