env.xml.fr revision ce8c1f85c756c686456e7374ec117c65873401ac
b0193f1c1f1540bfccbdca02df82669b9308e4e2Lennart Poettering<?xml version="1.0" encoding="ISO-8859-1" ?>
b0193f1c1f1540bfccbdca02df82669b9308e4e2Lennart Poettering<!DOCTYPE manualpage SYSTEM "/style/manualpage.dtd">
b0193f1c1f1540bfccbdca02df82669b9308e4e2Lennart Poettering<?xml-stylesheet type="text/xsl" href="/style/manual.fr.xsl"?>
b0193f1c1f1540bfccbdca02df82669b9308e4e2Lennart Poettering<!-- English Revision: 1061423:1300910 (outdated) -->
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek<!-- French translation : Lucien GENTIS -->
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier<!-- Reviewed by : Vincent Deffontaines -->
b0193f1c1f1540bfccbdca02df82669b9308e4e2Lennart Poettering Licensed to the Apache Software Foundation (ASF) under one or more
b0193f1c1f1540bfccbdca02df82669b9308e4e2Lennart Poettering contributor license agreements. See the NOTICE file distributed with
b0193f1c1f1540bfccbdca02df82669b9308e4e2Lennart Poettering this work for additional information regarding copyright ownership.
b0193f1c1f1540bfccbdca02df82669b9308e4e2Lennart Poettering The ASF licenses this file to You under the Apache License, Version 2.0
b0193f1c1f1540bfccbdca02df82669b9308e4e2Lennart Poettering (the "License"); you may not use this file except in compliance with
b0193f1c1f1540bfccbdca02df82669b9308e4e2Lennart Poettering the License. You may obtain a copy of the License at
b0193f1c1f1540bfccbdca02df82669b9308e4e2Lennart Poettering http://www.apache.org/licenses/LICENSE-2.0
b0193f1c1f1540bfccbdca02df82669b9308e4e2Lennart Poettering Unless required by applicable law or agreed to in writing, software
b0193f1c1f1540bfccbdca02df82669b9308e4e2Lennart Poettering distributed under the License is distributed on an "AS IS" BASIS,
b0193f1c1f1540bfccbdca02df82669b9308e4e2Lennart Poettering WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
b0193f1c1f1540bfccbdca02df82669b9308e4e2Lennart Poettering See the License for the specific language governing permissions and
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering limitations under the License.
b5efdb8af40ea759a1ea584c1bc44ecc81dd00ceLennart Poettering <title>Apache et les variables d'environnement</title>
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering <p>Deux types de variables d'environnement affectent le serveur
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek HTTP Apache.</p>
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering <p>Le premier type correspond aux variables d'environnement
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering contrôlées par le système d'exploitation sous-jacent et définies
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering avant le démarrage du serveur. Leurs valeurs peuvent être utilisées
b0193f1c1f1540bfccbdca02df82669b9308e4e2Lennart Poettering directement dans les fichiers de configuration, et peuvent
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek éventuellement être transmises aux scripts CGI et SSI via la
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering directive PassEnv.</p>
b0193f1c1f1540bfccbdca02df82669b9308e4e2Lennart Poettering <p>Le second type correspond aux variables nommées appelées aussi
b0193f1c1f1540bfccbdca02df82669b9308e4e2Lennart Poettering <em>variables d'environnement</em> dans lesquelles le serveur HTTP
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering Apache stocke des informations via un mécanisme spécial. Ces
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering informations peuvent servir à contrôler diverses opérations comme
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering l'enregistrement des traces ou le contrôle d'accès. On utilise aussi ces
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering variables dans le mécanisme de communication avec les programmes externes
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering comme les scripts CGI. Ce document présente différentes méthodes pour
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering manipuler et utiliser ces variables.</p>
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering <p>Bien que ces variables soient référencées comme <em>variables
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering d'environnement</em>, il ne faut pas les confondre avec les variables
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering d'environnement contrôlées par le système d'exploitation sous-jacent.
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering En fait, ces variables sont stockées et manipulées dans une structure
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering interne à Apache. Elles ne deviennent de véritables variables
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering d'environnement du système d'exploitation que lorsqu'elles sont mises à la
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering disposition de scripts CGI et de scripts inclus côté serveur (SSI). Si vous
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering souhaitez manipuler l'environnement du système d'exploitation sous lequel
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering le serveur s'exécute, vous devez utiliser les mécanismes standards de
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering manipulation de l'environnement fournis par l'interpréteur de commandes
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering (shell) de votre système d'exploitation.</p>
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering <title>Définition des variables d'environnement</title>
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering <directivelist>
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering <directive module="mod_setenvif">BrowserMatch</directive>
3251c0d2392062b2b8354793a2037d1161f824eeZbigniew Jędrzejewski-Szmek <directive module="mod_setenvif">BrowserMatchNoCase</directive>
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering <directive module="mod_env">PassEnv</directive>
3251c0d2392062b2b8354793a2037d1161f824eeZbigniew Jędrzejewski-Szmek <directive module="mod_rewrite">RewriteRule</directive>
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering <directive module="mod_env">SetEnv</directive>
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering <directive module="mod_setenvif">SetEnvIf</directive>
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering <directive module="mod_setenvif">SetEnvIfNoCase</directive>
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering <directive module="mod_env">UnsetEnv</directive>
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering </directivelist>
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering <title>Manipulations de base de l'environnement</title>
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering <p>La méthode la plus élémentaire pour définir une variable
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering d'environnement au niveau d'Apache consiste à utiliser la directive
3251c0d2392062b2b8354793a2037d1161f824eeZbigniew Jędrzejewski-Szmek inconditionnelle <directive module="mod_env"
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering >SetEnv</directive>. Les variables peuvent aussi être transmises depuis
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering l'environnement du shell à partir duquel le serveur a été démarré en
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering utilisant la directive
3251c0d2392062b2b8354793a2037d1161f824eeZbigniew Jędrzejewski-Szmek <directive module="mod_env">PassEnv</directive>.</p>
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering <title>Définitions conditionnelles en fonction des requêtes</title>
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering <p>Pour plus de souplesse, les directives fournies par le module
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering <module>mod_setenvif</module> permettent de définir les
3251c0d2392062b2b8354793a2037d1161f824eeZbigniew Jędrzejewski-Szmek variables d'environnement en tenant compte des caractéristiques
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering de chaque requête. Par exemple, une
3251c0d2392062b2b8354793a2037d1161f824eeZbigniew Jędrzejewski-Szmek variable pourrait n'être définie que lorsqu'un navigateur spécifique
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering (User-Agent) a généré la requête, ou seulement quand un en-tête
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering Referer particulier est présent. La directive
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering <directive module="mod_rewrite">RewriteRule</directive> du module
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering <module>mod_rewrite</module> qui utilise l'option
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering les variables d'environnement apporte encore plus de souplesse.</p>
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering <p>Finalement, le module <module>mod_unique_id</module> définit la variable
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering d'environnement <code>UNIQUE_ID</code> pour chaque requête à une valeur
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering qui est garantie unique parmi "toutes" les requêtes sous des
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering conditions très spécifiques.</p>
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering <p>En plus de l'ensemble des variables d'environnement internes à la
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering configuration d'Apache et de celles transmises depuis le shell,
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering les scripts CGI et les pages SSI
3251c0d2392062b2b8354793a2037d1161f824eeZbigniew Jędrzejewski-Szmek se voient affectés un ensemble de variables
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering d'environnement contenant des méta-informations à propos de la requête
3251c0d2392062b2b8354793a2037d1161f824eeZbigniew Jędrzejewski-Szmek comme préconisé dans la
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering <a href="http://www.ietf.org/rfc/rfc3875">spécification
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering <li>Les directives de manipulation de l'environnement ne permettent
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering pas de supplanter ou modifier les variables CGI standards.</li>
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering <li>Lorsqu'on utilise <program>suexec</program> pour exécuter des
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering scripts CGI, l'environnement est nettoyé et réduit à un ensemble de
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering variables <em>sûres</em> avant l'exécution du script. La liste des
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering variables <em>sûres</em> est définie à la compilation dans
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering <li>Pour des raisons de portabilité, les noms des variables
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering d'environnement ne peuvent contenir que des lettres, des chiffres, et
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering le caractère "sousligné". En outre, le premier caractère ne doit pas
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering être un chiffre. Les caractères qui ne satisfont pas à ces conditions
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering seront remplacés par un caractère "sousligné" quand ils seront
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering transmis aux scripts CGI et aux pages SSI.</li>
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering <li>Les contenus d'en-têtes HTTP transmis aux scripts de type
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering CGI ou autre via des variables d'environnement constituent un
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering cas particulier (voir plus loin). Leur nom est converti en
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering majuscules et seuls les tirets sont remplacés par des
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering caractères '_' ("souligné") ; si le format du nom de l'en-tête
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering n'est pas valide, celui-ci est ignoré. Voir <a
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering href="#fixheader">plus loin</a> pour une solution de
2aaafcf57048983b2b76d6325f333e50aca4a3a3Lennart Poettering contournement du problème.</li>
2aaafcf57048983b2b76d6325f333e50aca4a3a3Lennart Poettering module="mod_env">SetEnv</directive> s'exécute assez tard au
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering cours du traitement de la requête, ce qui signifie que des
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering directives telles que <directive
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering module="mod_setenvif">SetEnvIf</directive> et <directive
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering module="mod_rewrite">RewriteCond</directive> ne verront pas
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering les variables qu'elle aura définies.</li>
2aaafcf57048983b2b76d6325f333e50aca4a3a3Lennart Poettering <title>Utilisation des variables d'environnement</title>
2aaafcf57048983b2b76d6325f333e50aca4a3a3Lennart Poettering <directivelist>
2aaafcf57048983b2b76d6325f333e50aca4a3a3Lennart Poettering <directive module="mod_authz_host">Allow</directive>
2aaafcf57048983b2b76d6325f333e50aca4a3a3Lennart Poettering <directive module="mod_log_config">CustomLog</directive>
2aaafcf57048983b2b76d6325f333e50aca4a3a3Lennart Poettering <directive module="mod_authz_host">Deny</directive>
2aaafcf57048983b2b76d6325f333e50aca4a3a3Lennart Poettering <directive module="mod_ext_filter">ExtFilterDefine</directive>
2aaafcf57048983b2b76d6325f333e50aca4a3a3Lennart Poettering <directive module="mod_headers">Header</directive>
2aaafcf57048983b2b76d6325f333e50aca4a3a3Lennart Poettering <directive module="mod_log_config">LogFormat</directive>
2aaafcf57048983b2b76d6325f333e50aca4a3a3Lennart Poettering <directive module="mod_rewrite">RewriteCond</directive>
2aaafcf57048983b2b76d6325f333e50aca4a3a3Lennart Poettering <directive module="mod_rewrite">RewriteRule</directive>
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek </directivelist>
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek <p>La communication d'informations aux scripts CGI constitue une des
79413b673b45adc98dfeaec882bbdda2343cb2f9Lennart Poettering principales utilisations des variables d'environnement. Comme indiqué
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek plus haut, l'environnement transmis aux scripts CGI comprend des
19f6d710772305610b928bc2678b9d77fe11e770Lennart Poettering méta-informations standards à propos de la requête, en plus des
19f6d710772305610b928bc2678b9d77fe11e770Lennart Poettering variables définies dans la configuration d'Apache. Pour plus de
79413b673b45adc98dfeaec882bbdda2343cb2f9Lennart Poettering détails, se référer au
79413b673b45adc98dfeaec882bbdda2343cb2f9Lennart Poettering <a href="howto/cgi.html">tutoriel CGI</a>.</p>
a454d241ef8b08e0984c6efbbd6187d70e32145bLennart Poettering <p>Les documents inclus côté serveur (SSI) traités par le filtre
c5e33bf8342daa6bab22f495ef774741184de09dZbigniew Jędrzejewski-Szmek <code>INCLUDES</code> du module <module>mod_include</module>,
49e5de64e22ea4794092b91393545ab08e658e0aZbigniew Jędrzejewski-Szmek peuvent afficher les
c5e33bf8342daa6bab22f495ef774741184de09dZbigniew Jędrzejewski-Szmek variables d'environnement à l'aide de l'élément <code>echo</code>,
bdf7026e9557349cd3eeb291c01655d5f2a55db8Thomas Hindoe Paaboel Andersen et peuvent utiliser des variables d'environnement dans les éléments
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek de contrôle de flux pour rendre certaines parties d'une page
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek conditionnelles en fonction des caractéristiques de la requête.
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek Apache fournit aussi les variables d'environnement CGI standards
e1ba963fdf13f4057b9089e0c732e6c1eb69901eLennart Poettering comme indiqué plus haut. Pour plus de détails, se référer au
19f6d710772305610b928bc2678b9d77fe11e770Lennart Poettering <a href="howto/ssi.html">tutoriel SSI</a>.</p>
bdf7026e9557349cd3eeb291c01655d5f2a55db8Thomas Hindoe Paaboel Andersen <section id="access-control">
fa3cd7394c227ad38c5c09b2bc2d035e7fb14a76Zbigniew Jędrzejewski-Szmek <title>Contrôle d'accès</title>
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek <p>L'accès au serveur peut être contrôlé en fonction de la valeur de
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek variables d'environnement à l'aide des directives
6dbfd104711fa53d35b52cb54ed4557c9099145fRonny Chevalier <code>allow from env=</code> et <code>deny from env=</code>.
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek En association avec la directive
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek <directive module="mod_setenvif">SetEnvIf</directive>, ceci confère une
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek grande souplesse au contrôle d'accès au serveur en fonction des
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek caractéristiques du client. Par exemple, vous pouvez utiliser ces
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek directives pour interdire l'accès depuis un navigateur particulier
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek <title>Enregistrement conditionnel des traces</title>
14b0295f916a7ce5262b0b5b8a3418ce474b9c69Ronny Chevalier <p>Les variables d'environnement peuvent être enregistrées dans le
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek fichier de log des accès à l'aide de l'option <code>%e</code> de la
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek directive <directive module="mod_log_config">LogFormat</directive>.
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek En outre, la décision de tracer ou non les requêtes peut être prise
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek en fonction de l'état de variables d'environnement en utilisant la
79413b673b45adc98dfeaec882bbdda2343cb2f9Lennart Poettering forme conditionnelle de la directive
79413b673b45adc98dfeaec882bbdda2343cb2f9Lennart Poettering <directive module="mod_log_config">CustomLog</directive>. En
79413b673b45adc98dfeaec882bbdda2343cb2f9Lennart Poettering association avec la directive <directive module="mod_setenvif"
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek >SetEnvIf</directive>, ceci confère une grande souplesse au contrôle
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek du traçage des requêtes. Par exemple, vous pouvez choisir de ne pas
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek tracer les requêtes pour des noms de fichiers se terminant par
fa3cd7394c227ad38c5c09b2bc2d035e7fb14a76Zbigniew Jędrzejewski-Szmek <code>gif</code>, ou encore de ne tracer que les requêtes des clients
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek n'appartenant pas à votre sous-réseau.</p>
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek <title>En-têtes de réponse conditionnels</title>
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek <p>La directive <directive module="mod_headers">Header</directive>
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek peut se baser sur la présence ou l'absence d'une variable
14b0295f916a7ce5262b0b5b8a3418ce474b9c69Ronny Chevalier d'environnement pour décider si un certain en-tête HTTP sera placé
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek dans la réponse au client. Ceci permet, par exemple, de n'envoyer un
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek certain en-tête de réponse que si un en-tête correspondant est présent
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek dans la requête du client.</p>
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek <title>Activation de filtres externes</title>
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek <p>Les filtres externes configurés par le module
fa3cd7394c227ad38c5c09b2bc2d035e7fb14a76Zbigniew Jędrzejewski-Szmek <module>mod_ext_filter</module> à l'aide de la directive <directive
49e5de64e22ea4794092b91393545ab08e658e0aZbigniew Jędrzejewski-Szmek module="mod_ext_filter">ExtFilterDefine</directive> peuvent être
b463b81399f0bc0d54107ef819cc0f843473c7d7Zbigniew Jędrzejewski-Szmek activés de manière conditionnelle en fonction d'une variable
fee0a921830166abffe5a806a512da6ceb2fe2ebRonny Chevalier d'environnement à l'aide des options
b463b81399f0bc0d54107ef819cc0f843473c7d7Zbigniew Jędrzejewski-Szmek <code>disableenv=</code> et <code>enableenv=</code>.</p>
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <title>Réécriture d'URL</title>
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <p>La forme <code>%{ENV:<em>variable</em>}</code> de
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier directive <directive module="mod_rewrite">RewriteCond</directive>
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier permet au moteur de réécriture du module
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier décisions conditionnées par des variables d'environnement.
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier Notez que les variables accessibles dans
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <module>mod_rewrite</module> sans le préfixe
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <code>ENV:</code> ne sont pas de véritables variables
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier d'environnement. Ce sont plutôt des variables spécifiques à
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier qui ne sont pas accessibles pour les autres modules.</p>
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <title>Variables d'environnement à usage spécial</title>
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <p>Des problèmes d'interopérabilité ont conduit à l'introduction de
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier mécanismes permettant de modifier le comportement d'Apache lorsqu'il
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier dialogue avec certains clients. Afin de rendre ces mécanismes aussi
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier souples que possible, ils sont invoqués en définissant des variables
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier d'environnement, en général à l'aide de la directive
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <directive module="mod_setenvif">BrowserMatch</directive>, bien que les
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier directives <directive module="mod_env">SetEnv</directive> et
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <directive module="mod_env">PassEnv</directive> puissent aussi être
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering utilisées, par exemple.</p>
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <p>Ceci force le traitement d'une requête comme une requête HTTP/1.0
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering même si elle a été rédigée dans un langage plus récent.</p>
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <p>Si le filtre <code>DEFLATE</code> est activé, cette variable
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering d'environnement ignorera les réglages accept-encoding de votre
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier navigateur et enverra une sortie compressée inconditionnellement.</p>
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering <p>Cette variable entraîne la suppression de tout champ
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering <code>Vary</code> des en-têtes de la réponse avant que cette dernière
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering soit renvoyée au client. Certains clients n'interprètent pas ce champ
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier correctement, et la définition de cette variable permet de contourner
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering ce problème, mais implique aussi la définition de
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering <p>Cette variable force une réponse en langage HTTP/1.0 aux clients
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering qui envoient des requêtes dans le même langage. Elle fut implémentée à
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering l'origine suite à des problèmes avec les mandataires d'AOL. Certains
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering clients en langage HTTP/1.0 ne réagissent pas correctement face à une
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering réponse en langage HTTP/1.1, et cette variable peut être utilisée pour
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering assurer l'interopérabilité avec eux.</p>
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering <p>Positionnée à "1", cette variable désactive le filtre en sortie
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <code>DEFLATE</code> fourni par le module <module>mod_deflate</module> pour les
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier types de contenu autres que <code>text/html</code>. Si vous préférez
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier utiliser des fichiers compressés statiquement,
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <module>mod_negotiation</module> évalue aussi la variable (non
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering seulement pour gzip, mais aussi pour tous les encodages autres que
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering "identity").</p>
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <section id="no-gzip"><title>no-gzip</title>
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <p>Quand cette variable est définie, le filtre <code>DEFLATE</code> du
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier module <module>mod_deflate</module> est désactivé, et
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <module>mod_negotiation</module> refusera de délivrer des ressources
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier encodées.</p>
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <section id="no-cache"><title>no-cache</title>
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering <p><em>Disponible dans les versions 2.2.12 et ultérieures d'Apache</em></p>
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering <p>Lorsque cette variable est définie,
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering <module>mod_cache</module> ne sauvegardera pas de réponse
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering susceptible d'être mise en cache. Cette variable d'environnement
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering n'a aucune incidence sur le fait qu'une réponse déjà enregistrée
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering dans la cache soit utilisée ou non pour la requête courante.</p>
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering <p>Quand cette variable est définie, la directive
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering <directive module="core">KeepAlive</directive> est désactivée.</p>
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering <section id="prefer-language"><title>prefer-language</title>
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <p>Cette variable modifie le comportement du module
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <module>mod_negotiation</module>. Si elle contient un symbole de
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier langage (tel que <code>en</code>, <code>ja</code>
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier ou <code>x-klingon</code>), <module>mod_negotiation</module> essaie de
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier délivrer une variante dans ce langage. S'il n'existe pas de telle
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier variante, le processus normal de
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <a href="content-negotiation.html">négociation</a> s'applique.</p>
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering <p>Cette variable force le serveur à être plus prudent lors de l'envoi
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier d'une redirection au client. Elle est en général utilisée quand un
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier client présente un problème connu avec les redirections. Elle fut
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier implémentée à l'origine suite a un problème rencontré avec le logiciel
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier WebFolders de Microsoft qui ne gère pas correctement les redirections
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering vers des ressources de type répertoire via des méthodes DAV.</p>
fee0a921830166abffe5a806a512da6ceb2fe2ebRonny Chevalier <p><em>Disponible dans les versions postérieures à 2.0.54</em></p>
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <p>Quand Apache génère une redirection en réponse à une requête client,
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier la réponse inclut un texte destiné à être affiché au cas où le client ne
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier suivrait pas, ou ne pourrait pas suivre automatiquement la redirection.
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier Habituellement, Apache marque ce texte en accord avec le jeu de caractères
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier qu'il utilise, à savoir ISO-8859-1.</p>
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <p> Cependant, si la redirection fait référence à une page qui utilise un
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier jeu de caractères différent, certaines versions de navigateurs obsolètes
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier essaieront d'utiliser le jeu de caractères du texte de la redirection
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier plutôt que celui de la page réelle.
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier Ceci peut entraîner, par exemple, un rendu incorrect du Grec.</p>
fee0a921830166abffe5a806a512da6ceb2fe2ebRonny Chevalier <p>Si cette variable d'environnement est définie, Apache omettra le jeu de
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering caractères pour le texte de la redirection, et les navigateurs obsolètes
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering précités utiliseront correctement celui de la page de destination.</p>
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering <title>Note concernant la sécurité</title>
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering <p>L'envoi de pages d'erreur sans spécifier un jeu de caractères peut
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering conduire à des attaques de type "cross-site-scripting" pour les
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering navigateurs qui ne respectent pas la spécification HTTP/1.1 (MSIE) et
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering tentent de déduire le jeu de caractères à partir du contenu. De tels
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering navigateurs peuvent être facilement trompés et utiliser le jeu de
fee0a921830166abffe5a806a512da6ceb2fe2ebRonny Chevalier caractères UTF-7 ; les contenus des données en entrée de type UTF-7
fee0a921830166abffe5a806a512da6ceb2fe2ebRonny Chevalier (comme les URI de requête) ne seront alors plus protégés par les
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering mécanismes d'échappement usuels conçus pour prévenir les attaques
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering de type "cross-site-scripting".</p>
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering <section id="proxy"><title>force-proxy-request-1.0, proxy-nokeepalive, proxy-sendchunked,
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering proxy-sendcl, proxy-chain-auth, proxy-interim-response, proxy-initial-not-pooled</title>
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering <p>Ces directives modifient le comportement protocolaire du module
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering <module>mod_proxy</module>. Voir la documentation sur
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering <module>mod_proxy</module> et <module>mod_proxy_http</module> pour plus de détails.</p>
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering <title>Transmission du contenu d'en-têtes non valides aux scripts
1682ff60114b7a57972a03aa99f9864064593f72Zbigniew Jędrzejewski-Szmek <p>Avec la version 2.4, Apache est plus strict avec la conversion
143bfdaf0b890fa7acadf02d1eafacaef1b696bdHolger Hans Peter Freyther des en-têtes HTTP en variables d'environnement dans
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering <module>mod_cgi</module> et d'autres modules : dans les versions
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering précédentes, tout caractère invalide dans les noms d'en-têtes
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering était tout simplement remplacé par un caractère '_', ce qui
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering pouvait exposer à des attaques de type cross-site-scripting via
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering injection d'en-têtes (voir <a
218685865a3a7457cb220d20b8f339618cd1d488Lennart Poettering href="http://events.ccc.de/congress/2007/Fahrplan/events/2212.en.html">Bogues
143bfdaf0b890fa7acadf02d1eafacaef1b696bdHolger Hans Peter Freyther du Web inhabituelles</a>, planche 19/20).</p>
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier <p>Si vous devez supporter un client qui envoie des en-têtes non
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier conformes et si ceux-ci ne peuvent pas être corrigés, il existe
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier une solution de contournement simple mettant en jeu les modules
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering <module>mod_setenvif</module> et <module>mod_header</module>,
068ae9fb7c313b2ae080b542e8be85e8555c4709Ronny Chevalier et permettant de prendre en compte ces en-têtes :</p>
fee0a921830166abffe5a806a512da6ceb2fe2ebRonny Chevalier# L'exemple suivant montre comment prendre en compte un en-tête<br />
93c474725c0fb2530f093c106de0bce956544d29Lennart Poettering# Accept_Encoding non conforme envoyé par un client.<br />
143bfdaf0b890fa7acadf02d1eafacaef1b696bdHolger Hans Peter FreytherSetEnvIfNoCase ^Accept.Encoding$ ^(.*)$ fix_accept_encoding=$1<br />
b0193f1c1f1540bfccbdca02df82669b9308e4e2Lennart PoetteringRequestHeader set Accept-Encoding %{fix_accept_encoding}e env=fix_accept_encoding
httpd.conf pour tenir compte de problèmes connus avec certains clients.