blob: 5f8efa3b6228b513426ae4a2ff99069b041225cb [file]
<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="fr"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="width=device-width, initial-scale=1" name="viewport">
<!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
<title>Apache httpd et les variables d'environnement - Serveur HTTP Apache Version 2.5</title>
<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet">
<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size">
<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">
<script src="./style/scripts/prettify.min.js">
</script>
<link href="./images/favicon.png" rel="shortcut icon"></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p>
<p class="apache">Serveur HTTP Apache Version 2.5</p>
<img alt="" src="./images/feather.png"></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif"></a></div>
<div id="path">
<a href="https://www.apache.org/">Apache</a> &gt; <a href="https://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="https://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.5</a></div><div id="page-content"><div id="preamble"><h1>Apache httpd et les variables d'environnement</h1>
<button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="./en/env.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="./fr/env.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a> |
<a href="./ja/env.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/env.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./tr/env.html" hreflang="tr" rel="alternate" title="T&uuml;rk&ccedil;e">&nbsp;tr&nbsp;</a></p>
</div>
<p>Deux types de variables d'environnement affectent le serveur
HTTP Apache.</p>
<p>Le premier type correspond aux variables d'environnement
contr&ocirc;l&eacute;es par le syst&egrave;me d'exploitation sous-jacent et d&eacute;finies
avant le d&eacute;marrage du serveur. Leurs valeurs peuvent &ecirc;tre utilis&eacute;es
directement dans les fichiers de configuration, et peuvent
&eacute;ventuellement &ecirc;tre transmises aux scripts CGI et SSI &agrave; l'aide de la
directive PassEnv.</p>
<p>Le second type correspond aux variables nomm&eacute;es appel&eacute;es aussi
<em>variables d'environnement</em> dans lesquelles le serveur HTTP
Apache stocke des informations via un m&eacute;canisme sp&eacute;cial. Ces
informations peuvent servir &agrave; contr&ocirc;ler diverses op&eacute;rations comme
l'enregistrement des traces ou le contr&ocirc;le d'acc&egrave;s. On utilise aussi ces
variables dans le m&eacute;canisme de communication avec les programmes externes
comme les scripts CGI. Ce document pr&eacute;sente diff&eacute;rentes m&eacute;thodes pour
manipuler et utiliser ces variables.</p>
<p>Bien que ces variables soient r&eacute;f&eacute;renc&eacute;es comme <em>variables
d'environnement</em>, il ne faut pas les confondre avec les variables
d'environnement contr&ocirc;l&eacute;es par le syst&egrave;me d'exploitation sous-jacent.
En fait, ces variables sont stock&eacute;es et manipul&eacute;es dans une structure
interne &agrave; Apache httpd. Elles ne deviennent de v&eacute;ritables variables
d'environnement du syst&egrave;me d'exploitation que lorsqu'elles sont mises &agrave; la
disposition de scripts CGI et de scripts inclus c&ocirc;t&eacute; serveur (SSI). Si vous
souhaitez manipuler l'environnement du syst&egrave;me d'exploitation sous lequel
le serveur s'ex&eacute;cute, vous devez utiliser les m&eacute;canismes standards de
manipulation de l'environnement fournis par l'interpr&eacute;teur de commandes
(shell) de votre syst&egrave;me d'exploitation.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif"> <a href="#setting">D&eacute;finition des variables d'environnement</a></li>
<li><img alt="" src="./images/down.gif"> <a href="#using">Utilisation des variables d'environnement</a></li>
<li><img alt="" src="./images/down.gif"> <a href="#cgi">Variables d'environnement de CGI</a></li>
<li><img alt="" src="./images/down.gif"> <a href="#special">Variables d'environnement &agrave; usage sp&eacute;cial</a></li>
<li><img alt="" src="./images/down.gif"> <a href="#redirect-vars">Variables REDIRECT_</a></li>
<li><img alt="" src="./images/down.gif"> <a href="#examples">Exemples</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div>
<div class="section">
<h2 id="setting">D&eacute;finition des variables d'environnement <a title="Lien permanent" href="#setting" class="permalink">&para;</a></h2>
<table class="related"><tr><th>Modules Apparent&eacute;s</th><th>Directives Apparent&eacute;es</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code></li><li><code class="module"><a href="./mod/mod_env.html">mod_env</a></code></li><li><code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code></li><li><code class="module"><a href="./mod/mod_setenvif.html">mod_setenvif</a></code></li><li><code class="module"><a href="./mod/mod_unique_id.html">mod_unique_id</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code></li><li><code class="directive"><a href="./mod/mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a></code></li><li><code class="directive"><a href="./mod/mod_env.html#passenv">PassEnv</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code></li><li><code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code></li><li><code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code></li><li><code class="directive"><a href="./mod/mod_setenvif.html#setenvifnocase">SetEnvIfNoCase</a></code></li><li><code class="directive"><a href="./mod/mod_env.html#unsetenv">UnsetEnv</a></code></li></ul></td></tr></table>
<h3 id="basic-manipulation">Manipulations de base de l'environnement</h3>
<p>La m&eacute;thode la plus &eacute;l&eacute;mentaire pour d&eacute;finir une variable
d'environnement au niveau d'Apache httpd consiste &agrave; utiliser la directive
inconditionnelle <code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code>. Les variables peuvent aussi &ecirc;tre transmises depuis
l'environnement du shell &agrave; partir duquel le serveur a &eacute;t&eacute; d&eacute;marr&eacute; en
utilisant la directive
<code class="directive"><a href="./mod/mod_env.html#passenv">PassEnv</a></code>.</p>
<h3 id="conditional">D&eacute;finitions conditionnelles en fonction des requ&ecirc;tes</h3>
<p>Pour plus de souplesse, les directives fournies par le module
<code class="module"><a href="./mod/mod_setenvif.html">mod_setenvif</a></code> permettent de d&eacute;finir les
variables d'environnement en tenant compte des caract&eacute;ristiques
de chaque requ&ecirc;te. Par exemple, une
variable pourrait n'&ecirc;tre d&eacute;finie que lorsqu'un navigateur sp&eacute;cifique
(User-Agent) a g&eacute;n&eacute;r&eacute; la requ&ecirc;te, ou seulement quand un en-t&ecirc;te
Referer particulier est pr&eacute;sent. La directive
<code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> du module
<code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> qui utilise l'option
<code>[E=...]</code> pour d&eacute;finir
les variables d'environnement apporte encore plus de souplesse.</p>
<h3 id="unique-identifiers">Identifiants uniques</h3>
<p>Finalement, le module <code class="module"><a href="./mod/mod_unique_id.html">mod_unique_id</a></code> d&eacute;finit la variable
d'environnement <code>UNIQUE_ID</code> pour chaque requ&ecirc;te &agrave; une valeur
qui est garantie unique parmi &laquo;&nbsp;toutes&nbsp;&raquo; les requ&ecirc;tes
sous des conditions tr&egrave;s sp&eacute;cifiques.</p>
<h3 id="standard-cgi">Variables CGI standards</h3>
<p>En plus de l'ensemble des variables d'environnement internes &agrave; la
configuration d'Apache httpd et de celles transmises depuis le shell,
les scripts CGI et les pages SSI
se voient affect&eacute;s un ensemble de variables
d'environnement contenant des m&eacute;ta-informations &agrave; propos de la requ&ecirc;te
comme pr&eacute;conis&eacute; dans la sp&eacute;cification
sur les CGIs (<a href="https://www.rfc-editor.org/rfc/rfc3875">RFC 3875</a>).</p>
<h3 id="caveats">Quelques mises en garde</h3>
<ul>
<li>Les directives de manipulation de l'environnement ne permettent
pas de supplanter ou modifier les variables CGI standards.</li>
<li>Lorsqu'on utilise <code class="program"><a href="./programs/suexec.html">suexec</a></code> pour ex&eacute;cuter des
scripts CGI, l'environnement est nettoy&eacute; et r&eacute;duit &agrave; un ensemble de
variables <em>s&ucirc;res</em> avant l'ex&eacute;cution du script. La liste des
variables <em>s&ucirc;res</em> est d&eacute;finie &agrave; la compilation dans
<code>suexec.c</code>.</li>
<li>Pour des raisons de portabilit&eacute;, les noms des variables
d'environnement ne peuvent contenir que des lettres, des chiffres et
le caract&egrave;re &laquo;&nbsp;soulign&eacute;&nbsp;&raquo;. En outre, le premier caract&egrave;re ne doit pas
&ecirc;tre un chiffre. Les caract&egrave;res qui ne satisfont pas &agrave; ces conditions
seront remplac&eacute;s par un caract&egrave;re &laquo;&nbsp;soulign&eacute;&nbsp;&raquo; quand ils seront
transmis aux scripts CGI et aux pages SSI.</li>
<li>Les contenus d'en-t&ecirc;tes HTTP transmis aux scripts de type
CGI ou autre &agrave; l'aide de variables d'environnement constituent un
cas particulier (voir plus loin). Leur nom est converti en
majuscules et seuls les tirets sont remplac&eacute;s par des
caract&egrave;res '_' (&laquo;&nbsp;soulign&eacute;&nbsp;&raquo;) ; si le format du nom de l'en-t&ecirc;te
n'est pas valide, celui-ci est ignor&eacute;. Voir <a href="#fixheader">plus loin</a> pour une solution de
contournement du probl&egrave;me.</li>
<li>La directive <code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code> s'ex&eacute;cute assez tard au
cours du traitement de la requ&ecirc;te, ce qui signifie que des
directives telles que <code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code> et <code class="directive"><a href="./mod/mod_rewrite.html#rewritecond">RewriteCond</a></code> ne verront pas
les variables qu'elle aura d&eacute;finies.</li>
<li>Lorsque le serveur cherche un chemin via une <a class="glossarylink" href="./glossary.html#subrequest" title="voir glossaire">sous-requ&ecirc;te</a> interne (par exemple la
recherche d'un <code class="directive"><a href="./mod/mod_dir.html#directoryindex">DirectoryIndex</a></code>), ou lorsqu'il g&eacute;n&egrave;re un
listing du contenu d'un r&eacute;pertoire &agrave; l'aide du module
<code class="module"><a href="./mod/mod_autoindex.html">mod_autoindex</a></code>, la sous-requ&ecirc;te n'h&eacute;rite pas des
variables d'environnement sp&eacute;cifiques &agrave; la requ&ecirc;te. En outre, &agrave; cause
des phases de l'API auxquelles <code class="module"><a href="./mod/mod_setenvif.html">mod_setenvif</a></code> prend
part, les directives <code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code> ne sont pas &eacute;valu&eacute;es
s&eacute;par&eacute;ment dans la sous-requ&ecirc;te.</li>
</ul>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div>
<div class="section">
<h2 id="using">Utilisation des variables d'environnement <a title="Lien permanent" href="#using" class="permalink">&para;</a></h2>
<table class="related"><tr><th>Modules Apparent&eacute;s</th><th>Directives Apparent&eacute;es</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_authz_host.html">mod_authz_host</a></code></li><li><code class="module"><a href="./mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="./mod/mod_ext_filter.html">mod_ext_filter</a></code></li><li><code class="module"><a href="./mod/mod_headers.html">mod_headers</a></code></li><li><code class="module"><a href="./mod/mod_include.html">mod_include</a></code></li><li><code class="module"><a href="./mod/mod_log_config.html">mod_log_config</a></code></li><li><code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_authz_core.html#require">Require</a></code></li><li><code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code></li><li><code class="directive"><a href="./mod/mod_access_compat.html#allow">Allow</a></code></li><li><code class="directive"><a href="./mod/mod_access_compat.html#deny">Deny</a></code></li><li><code class="directive"><a href="./mod/mod_ext_filter.html#extfilterdefine">ExtFilterDefine</a></code></li><li><code class="directive"><a href="./mod/mod_headers.html#header">Header</a></code></li><li><code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewritecond">RewriteCond</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code></li></ul></td></tr></table>
<div class="note">
<h3>Alternative moderne : les expressions</h3>
<p>De nombreux exemples d&rsquo;utilisation qui n&eacute;cessitaient auparavant de
d&eacute;finir et tester des variables d&rsquo;environnement &mdash; par exemple les en-t&ecirc;tes
conditionnels, le contr&ocirc;le d&rsquo;acc&egrave;s et la journalisation &mdash; peuvent
maintenant &ecirc;tre trait&eacute;s de mani&egrave;re plus directe en utilisant les
expressions <code class="directive"><a href="./mod/core.html#if">&lt;If&gt;</a></code> avec la
fonction <code>reqenv</code>. Voir <a href="expr.html">Les expressions
dans le serveur HTTP Apache</a> pour la syntaxe des expressions et la
liste compl&egrave;te des <a href="expr.html#vars">variables</a> disponibles.</p>
</div>
<h3 id="cgi-scripts">Scripts CGI</h3>
<p>La communication d'informations aux scripts CGI constitue une des
principales utilisations des variables d'environnement. Comme indiqu&eacute;
plus haut, l'environnement transmis aux scripts CGI comprend des
m&eacute;ta-informations standards &agrave; propos de la requ&ecirc;te, en plus des
variables d&eacute;finies dans la configuration d'Apache httpd. Pour plus de
d&eacute;tails, se r&eacute;f&eacute;rer au
<a href="howto/cgi.html">tutoriel CGI</a>.</p>
<h3 id="ssi-pages">Pages SSI</h3>
<p>Les documents inclus c&ocirc;t&eacute; serveur (SSI) trait&eacute;s par le filtre
<code>INCLUDES</code> du module <code class="module"><a href="./mod/mod_include.html">mod_include</a></code>,
peuvent afficher les
variables d'environnement &agrave; l'aide de l'&eacute;l&eacute;ment <code>echo</code>,
et peuvent utiliser des variables d'environnement dans les &eacute;l&eacute;ments
de contr&ocirc;le de flux pour rendre certaines parties d'une page
conditionnelles en fonction des caract&eacute;ristiques de la requ&ecirc;te.
Apache httpd fournit aussi les variables d'environnement CGI standards
aux pages SSI
comme indiqu&eacute; plus haut. Pour plus de d&eacute;tails, se r&eacute;f&eacute;rer au
<a href="howto/ssi.html">tutoriel SSI</a>.</p>
<h3 id="access-control">Contr&ocirc;le d'acc&egrave;s</h3>
<p>L'acc&egrave;s au serveur peut &ecirc;tre contr&ocirc;l&eacute; en fonction de
variables d'environnement &agrave; l'aide des directives
<code>Require env</code> et <code>Require not env</code>.
En association avec la directive
<code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code>, cela conf&egrave;re une
grande souplesse au contr&ocirc;le d'acc&egrave;s au serveur en fonction des
caract&eacute;ristiques du client. Par exemple, vous pouvez utiliser ces
directives pour interdire l'acc&egrave;s depuis un navigateur particulier
(User-Agent).
Pour des conditions plus complexes, <a href="expr.html"><code>Require
expr</code></a> fournit une alternative qui permet d&rsquo;&eacute;valuer des
variables d&rsquo;environnement en utilisant la fonction <code>reqenv</code>
en combinaison avec d&rsquo;autres propri&eacute;t&eacute;s de requ&ecirc;te.
</p>
<h3 id="logging">Enregistrement conditionnel des traces</h3>
<p>Les variables d'environnement peuvent &ecirc;tre enregistr&eacute;es dans le
fichier de log des acc&egrave;s &agrave; l'aide de l'option <code>%e</code> de la
directive <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code>.
En outre, la d&eacute;cision de tracer ou non les requ&ecirc;tes peut &ecirc;tre prise
en fonction de l'&eacute;tat de variables d'environnement en utilisant la
forme conditionnelle de la directive
<code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code>. En
association avec la directive <code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code>, cela conf&egrave;re une grande souplesse au contr&ocirc;le
du tra&ccedil;age des requ&ecirc;tes. Par exemple, vous pouvez choisir de ne pas
tracer les requ&ecirc;tes pour des noms de fichiers se terminant par
<code>gif</code>, ou encore de ne tracer que les requ&ecirc;tes des clients
n'appartenant pas &agrave; votre sous-r&eacute;seau.</p>
<h3 id="response-headers">En-t&ecirc;tes de r&eacute;ponse conditionnels</h3>
<p>La directive <code class="directive"><a href="./mod/mod_headers.html#header">Header</a></code>
peut se baser sur la pr&eacute;sence ou l'absence d'une variable
d'environnement pour d&eacute;cider si un certain en-t&ecirc;te HTTP sera plac&eacute;
dans la r&eacute;ponse au client. Cela permet, par exemple, de n'envoyer un
certain en-t&ecirc;te de r&eacute;ponse que si un en-t&ecirc;te correspondant est pr&eacute;sent
dans la requ&ecirc;te du client.</p>
<h3 id="external-filter">Activation de filtres externes</h3>
<p>Les filtres externes configur&eacute;s par le module
<code class="module"><a href="./mod/mod_ext_filter.html">mod_ext_filter</a></code> &agrave; l'aide de la directive <code class="directive"><a href="./mod/mod_ext_filter.html#extfilterdefine">ExtFilterDefine</a></code> peuvent &ecirc;tre
activ&eacute;s de mani&egrave;re conditionnelle en fonction d'une variable
d'environnement &agrave; l'aide des options
<code>disableenv=</code> et <code>enableenv=</code>.</p>
<h3 id="url-rewriting">R&eacute;&eacute;criture d'URL</h3>
<p>La forme <code>%{ENV:<em>variable</em>}</code> de
<em>TestString</em> dans la
directive <code class="directive"><a href="./mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>
permet au moteur de r&eacute;&eacute;criture du module
<code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> de prendre des
d&eacute;cisions conditionn&eacute;es par des variables d'environnement.
Notez que les variables accessibles dans
<code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> sans le pr&eacute;fixe
<code>ENV:</code> ne sont pas de v&eacute;ritables variables
d'environnement. Ce sont plut&ocirc;t des variables sp&eacute;cifiques &agrave;
<code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code>
qui ne sont pas accessibles pour les autres modules.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div>
<div class="section">
<h2 id="cgi">Variables d'environnement de CGI <a title="Lien permanent" href="#cgi" class="permalink">&para;</a></h2>
<p>La sp&eacute;cification sur les CGIs (<a href="https://www.rfc-editor.org/rfc/rfc3875#section-4.1">RFC 3875</a>) d&eacute;finit un
certain nombre de m&eacute;ta-variables dont beaucoup sont affect&eacute;es de leur valeur
&agrave; partir des en-t&ecirc;tes HTTP. Apache httpd les met &agrave; disposition en tant que
variables d&rsquo;environnement pour les scripts CGI et d&rsquo;autres m&eacute;canismes de
traitement des requ&ecirc;tes. Elles ont &eacute;t&eacute; plus largement adopt&eacute;es et
constituent une m&eacute;thode standard pour transmettre des informations entre le
navigateur et le serveur, et entre les processus au sein du serveur. Nous en
d&eacute;crivons quelques unes ici. Pour une liste compl&egrave;te des variables de
requ&ecirc;te disponibles dans les <a href="expr.html">expressions</a> (parmi
lesquelles <code>REQUEST_URI</code>, <code>REMOTE_ADDR</code>,
<code>SERVER_NAME</code> et de nombreuses autres), voir le document de
r&eacute;f&eacute;rence <a href="expr.html#vars">variables dans les expressions</a>.</p>
<p>Consultez la sp&eacute;cification CGI pour plus de d&eacute;tails &agrave; propos des
m&eacute;tavariables CGI standard.</p>
<h3 id="query-string">QUERY_STRING</h3>
<p>La variable <code>QUERY_STRING</code> est d&eacute;finie avec tout ce
qui appara&icirc;t apr&egrave;s un point d'interrogation &agrave; la fin de l'URL d'une
requ&ecirc;te. Elle permet de transmettre des informations au serveur et peut
&ecirc;tre divis&eacute;e en paires cl&eacute;/valeur. L'encodage de la cha&icirc;ne doit &ecirc;tre de
type URL.</p>
<div class="example"><p><code>
https://example.com/path/resource.php?key1=value1&amp;key2=another%20value
</code></p></div>
<p>Dans cet exemple, la variable <code>QUERY_STRING</code> est d&eacute;finie
avec tout ce qui suit le point d'interrogation, et l'application
r&eacute;ceptrice (une application CGI ou un script PHP, par exemple) est
charg&eacute;e d'en extraire les paires cl&eacute;/valeur.</p>
<h3 id="path-info">PATH_INFO</h3>
<p>La variable <a class="glossarylink" href="./glossary.html#pathinfo" title="voir glossaire">PATH_INFO</a> est d&eacute;finie avec toute valeur qui
appara&icirc;t apr&egrave;s une ressource correspondante &agrave; la fin de l'URL,
<code>QUERY_STRING</code> non comprise. Tout para&icirc;t plus clair avec un
exemple&nbsp;:</p>
<div class="example"><p><code>
https://example.com/resource.php/additional/data?key1=value1
</code></p></div>
<p>Dans cet exemple, <code>PATH_INFO</code> est d&eacute;finie avec la cha&icirc;ne
<code>/additional/data</code> et <code>QUERY_STRING</code> avec la
cha&icirc;ne <code>key1=value1</code>.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div>
<div class="section">
<h2 id="special">Variables d'environnement &agrave; usage sp&eacute;cial <a title="Lien permanent" href="#special" class="permalink">&para;</a></h2>
<p>Des probl&egrave;mes d'interop&eacute;rabilit&eacute; ont conduit &agrave; l'introduction de
m&eacute;canismes permettant de modifier le comportement d'Apache httpd lorsqu'il
dialogue avec certains clients. Afin de rendre ces m&eacute;canismes aussi
souples que possible, ils sont invoqu&eacute;s en d&eacute;finissant des variables
d'environnement, en g&eacute;n&eacute;ral &agrave; l'aide de la directive
<code class="directive"><a href="./mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code>, bien que les
directives <code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code> et
<code class="directive"><a href="./mod/mod_env.html#passenv">PassEnv</a></code> puissent aussi &ecirc;tre
utilis&eacute;es, par exemple.</p>
<h3 id="downgrade">downgrade-1.0</h3>
<p>Cela force le traitement d'une requ&ecirc;te comme une requ&ecirc;te HTTP/1.0
m&ecirc;me si elle a &eacute;t&eacute; r&eacute;dig&eacute;e dans un langage plus r&eacute;cent.</p>
<h3 id="force-gzip">force-gzip</h3>
<p>Si le filtre <code>DEFLATE</code> est activ&eacute;, cette variable
d'environnement ignorera les r&eacute;glages accept-encoding de votre
navigateur et enverra une sortie compress&eacute;e inconditionnellement.</p>
<h3 id="force-no-vary">force-no-vary</h3>
<p>Cette variable entra&icirc;ne la suppression de tout champ
<code>Vary</code> des en-t&ecirc;tes de la r&eacute;ponse avant que cette derni&egrave;re
soit renvoy&eacute;e au client. Certains clients n'interpr&egrave;tent pas ce champ
correctement, et la d&eacute;finition de cette variable permet de contourner
ce probl&egrave;me, mais implique aussi la d&eacute;finition de
<strong>force-response-1.0</strong>.</p>
<h3 id="force-response">force-response-1.0</h3>
<p>Cette variable force une r&eacute;ponse en langage HTTP/1.0 aux clients
qui envoient des requ&ecirc;tes dans le m&ecirc;me langage. Elle fut impl&eacute;ment&eacute;e &agrave;
l'origine suite &agrave; des probl&egrave;mes avec les mandataires d'AOL. Certains
clients en langage HTTP/1.0 ne r&eacute;agissent pas correctement face &agrave; une
r&eacute;ponse en langage HTTP/1.1, et cette variable peut &ecirc;tre utilis&eacute;e pour
assurer l'interop&eacute;rabilit&eacute; avec eux.</p>
<h3 id="gzip-only-text-html">gzip-only-text/html</h3>
<p>Positionn&eacute;e &agrave; &laquo;&nbsp;1&nbsp;&raquo;, cette variable d&eacute;sactive le filtre en sortie
<code>DEFLATE</code> fourni par le module <code class="module"><a href="./mod/mod_deflate.html">mod_deflate</a></code> pour les
types de contenu autres que <code>text/html</code>. Si vous pr&eacute;f&eacute;rez
utiliser des fichiers compress&eacute;s statiquement,
<code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> &eacute;value aussi la variable (non
seulement pour gzip, mais aussi pour tous les encodages autres que
&laquo;&nbsp;identity&nbsp;&raquo;).</p>
<h3 id="no-gzip">no-gzip</h3>
<p>Quand cette variable est d&eacute;finie, le filtre <code>DEFLATE</code> du
module <code class="module"><a href="./mod/mod_deflate.html">mod_deflate</a></code> est d&eacute;sactiv&eacute;, et
<code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> refusera de d&eacute;livrer des ressources
encod&eacute;es.</p>
<h3 id="no-cache">no-cache</h3>
<p><em>Disponible dans les versions 2.2.12 et ult&eacute;rieures d'Apache httpd</em></p>
<p>Lorsque cette variable est d&eacute;finie,
<code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> ne sauvegardera pas de r&eacute;ponse
susceptible d'&ecirc;tre mise en cache. Cette variable d'environnement
n'a aucune incidence sur le fait qu'une r&eacute;ponse d&eacute;j&agrave; enregistr&eacute;e
dans le cache soit utilis&eacute;e ou non pour la requ&ecirc;te courante.</p>
<h3 id="nokeepalive">nokeepalive</h3>
<p>Quand cette variable est d&eacute;finie, la directive
<code class="directive"><a href="./mod/core.html#keepalive">KeepAlive</a></code> est d&eacute;sactiv&eacute;e.</p>
<h3 id="prefer-language">prefer-language</h3>
<p>Cette variable modifie le comportement du module
<code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code>. Si elle contient un symbole de
langage (tel que <code>en</code>, <code>ja</code>
ou <code>x-klingon</code>), <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> essaie de
d&eacute;livrer une variante dans ce langage. S'il n'existe pas de telle
variante, le processus normal de
<a href="content-negotiation.html">n&eacute;gociation</a> s'applique.</p>
<h3 id="redirect-carefully">redirect-carefully</h3>
<p>Cette variable force le serveur &agrave; &ecirc;tre plus prudent lors de l'envoi
d'une redirection au client. Elle est en g&eacute;n&eacute;ral utilis&eacute;e quand un
client pr&eacute;sente un probl&egrave;me connu avec les redirections. Elle fut
impl&eacute;ment&eacute;e &agrave; l'origine suite a un probl&egrave;me rencontr&eacute; avec le logiciel
WebFolders de Microsoft qui ne g&egrave;re pas correctement les redirections
vers des ressources de type r&eacute;pertoire via des m&eacute;thodes DAV.</p>
<h3 id="suppress-error-charset">suppress-error-charset</h3>
<p>Quand Apache httpd g&eacute;n&egrave;re une redirection en r&eacute;ponse &agrave; une requ&ecirc;te client,
la r&eacute;ponse inclut un texte destin&eacute; &agrave; &ecirc;tre affich&eacute; au cas o&ugrave; le client ne
suivrait pas, ou ne pourrait pas suivre automatiquement la redirection.
Habituellement, Apache httpd marque ce texte en accord avec le jeu de caract&egrave;res
qu'il utilise, &agrave; savoir ISO-8859-1.</p>
<p> Cependant, si la redirection fait r&eacute;f&eacute;rence &agrave; une page qui utilise un
jeu de caract&egrave;res diff&eacute;rent, certaines versions de navigateurs obsol&egrave;tes
essaieront d'utiliser le jeu de caract&egrave;res du texte de la redirection
plut&ocirc;t que celui de la page r&eacute;elle.
Cela peut entra&icirc;ner, par exemple, un rendu incorrect du Grec.</p>
<p>Si cette variable d'environnement est d&eacute;finie, Apache httpd omettra le jeu de
caract&egrave;res pour le texte de la redirection, et les navigateurs obsol&egrave;tes
pr&eacute;cit&eacute;s utiliseront correctement celui de la page de destination.</p>
<div class="warning">
<h3>Note concernant la s&eacute;curit&eacute;</h3>
<p>L'envoi de pages d'erreur sans sp&eacute;cifier un jeu de caract&egrave;res peut
conduire &agrave; des attaques de type &laquo;&nbsp;cross-site-scripting" pour les
navigateurs qui ne respectent pas la sp&eacute;cification HTTP/1.1 (MSIE) et
tentent de d&eacute;duire le jeu de caract&egrave;res &agrave; partir du contenu. De tels
navigateurs peuvent &ecirc;tre facilement tromp&eacute;s et utiliser le jeu de
caract&egrave;res UTF-7 ; les contenus des donn&eacute;es en entr&eacute;e de type UTF-7
(comme les URI de requ&ecirc;te) ne seront alors plus prot&eacute;g&eacute;s par les
m&eacute;canismes d'&eacute;chappement usuels con&ccedil;us pour pr&eacute;venir les attaques
de type &laquo;&nbsp;cross-site-scripting".</p>
</div>
<h3 id="proxy">force-proxy-request-1.0, proxy-nokeepalive, proxy-sendchunked,
proxy-sendcl, proxy-chain-auth, proxy-interim-response, proxy-initial-not-pooled</h3>
<p>Ces directives modifient le comportement protocolaire du module
<code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code>. Voir la documentation sur
<code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code> et <code class="module"><a href="./mod/mod_proxy_http.html">mod_proxy_http</a></code> pour plus de d&eacute;tails.</p>
<h3 id="cgilike">ap_trust_cgilike_cl</h3>
<p><em>Disponible &agrave; partir de la version 2.4.59 du serveur HTTP Apache</em></p>
<p>Cette variable permet &agrave; un script qui s'ex&eacute;cute dans un module de type CGI
de fournir son propre en-t&ecirc;te de r&eacute;ponse HTTP Content-Length. Elle ne doit
&ecirc;tre d&eacute;finie que dans les sections de configuration qui contiennent des
scripts de confiance.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div>
<div class="section">
<h2 id="redirect-vars">Variables REDIRECT_ <a title="Lien permanent" href="#redirect-vars" class="permalink">&para;</a></h2>
<p>Lorsqu'une redirection interne se produit &mdash;&nbsp;provoqu&eacute;e par une directive
<code class="directive"><a href="./mod/core.html#errordocument">ErrorDocument</a></code>, par
<code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code>, par une directive <code class="directive"><a href="./mod/mod_dir.html#fallbackresource">FallbackResource</a></code> ou par tout autre m&eacute;canisme de
redirection interne &mdash;&nbsp;les variables d'environnement de la requ&ecirc;te originelle
sont transmises &agrave; la cible de la redirection avec le pr&eacute;fixe
<code>REDIRECT_</code>.</p>
<p>Deux variables suppl&eacute;mentaires sont toujours d&eacute;finies&nbsp;:</p>
<dl>
<dt><code>REDIRECT_URL</code></dt>
<dd>Le chemin URL de la requ&ecirc;te originelle avant la redirection interne.
Cette variable n'est pas d&eacute;finie par un quelconque module sp&eacute;cifique, mais
par le cœur du serveur.</dd>
<dt><code>REDIRECT_STATUS</code></dt>
<dd>Le code d'&eacute;tat HTTP qui a d&eacute;clench&eacute; la redirection. Pour les
documents d'erreur, il s'agit du code d'&eacute;tat d'erreur (par exemple 404).
Pour les redirections internes de <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> ou de la
directive <code class="directive"><a href="./mod/mod_dir.html#fallbackresource">FallbackResource</a></code>, il
s'agit en g&eacute;n&eacute;ral du code d'&eacute;tat 200.</dd>
</dl>
<p>Par exemple, si la valeur de <code>REQUEST_URI</code> &eacute;tait
<code>/original/chemin</code> et qu'une redirection interne envoyait la
requ&ecirc;te &agrave; <code>/handler.php</code>, la cible de la redirection verrait
<code>REDIRECT_URL=/original/path</code> et
<code>REQUEST_URI=/handler.php</code>.</p>
<p>Ces variables sont disponibles pour les scripts CGI, les pages SSI et
dans les <a href="expr.html">expressions</a>. Pour plus d'informations &agrave;
propos des variables REDIRECT_ dans le contexte des documents d'erreur, voir
<a href="custom-error.html">R&eacute;ponses aux erreurs personnalis&eacute;es</a>.</p>
<p>Ce renommage est particuli&egrave;rement pertinent lorsqu&rsquo;on utilise le drapeau
<a href="rewrite/flags.html#flag_e">[E] flag</a> de
<code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> pour d&eacute;finir des variables, car les r&eacute;&eacute;critures
dans un contexte de r&eacute;pertoire d&eacute;clenchent toujours une redirection interne.
Voir cette section pour des exemples et des solutions de contournement.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div>
<div class="section">
<h2 id="examples">Exemples <a title="Lien permanent" href="#examples" class="permalink">&para;</a></h2>
<h3 id="fixheader">Transmission du contenu d'en-t&ecirc;tes non valides aux scripts
CGI</h3>
<p>Avec la version 2.4, Apache httpd est plus strict avec la conversion
des en-t&ecirc;tes HTTP en variables d'environnement dans
<code class="module"><a href="./mod/mod_cgi.html">mod_cgi</a></code> et d'autres modules : dans les versions
pr&eacute;c&eacute;dentes, tout caract&egrave;re non valable dans les noms d'en-t&ecirc;tes
&eacute;tait tout simplement remplac&eacute; par un caract&egrave;re '_', ce qui
pouvait exposer &agrave; des attaques de type cross-site-scripting via
injection d'en-t&ecirc;tes.</p>
<p>Si vous devez prendre en charge un client qui envoie des en-t&ecirc;tes non
conformes et si ceux-ci ne peuvent pas &ecirc;tre corrig&eacute;s, il existe
une solution de contournement simple mettant en jeu les modules
<code class="module"><a href="./mod/mod_setenvif.html">mod_setenvif</a></code> et <code class="module"><a href="./mod/mod_headers.html">mod_headers</a></code>,
et permettant de prendre en compte ces en-t&ecirc;tes :</p>
<pre class="prettyprint lang-config"># L'exemple suivant montre comment prendre en compte un en-t&ecirc;te<br>
# Accept_Encoding non conforme envoy&eacute; par un client.
#
SetEnvIfNoCase ^Accept.Encoding$ ^(.*)$ fix_accept_encoding=$1
RequestHeader set Accept-Encoding %{fix_accept_encoding}e env=fix_accept_encoding</pre>
<h3 id="misbehaving">Modification du comportement protocolaire face &agrave; des clients
r&eacute;agissant de mani&egrave;re non conforme</h3>
<p>Les versions ant&eacute;rieures recommandaient l'ajout de ces lignes dans
httpd.conf pour tenir compte de probl&egrave;mes connus avec certains clients.
Comme les clients concern&eacute;s sont maintenant tr&egrave;s peu utilis&eacute;s, cet
ajout n'est pratiquement plus n&eacute;cessaire.</p>
<pre class="prettyprint lang-config">#
# The following directives modify normal HTTP response behavior.
# The first directive disables keepalive for Netscape 2.x and browsers that
# spoof it. There are known problems with these browser implementations.
# The second directive is for Microsoft Internet Explorer 4.0b2
# which has a broken HTTP/1.1 implementation and does not properly
# support keepalive when it is used on 301 or 302 (redirect) responses.
#
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
#
# The following directive disables HTTP/1.1 responses to browsers which
# are in violation of the HTTP/1.0 spec by not being able to grok a
# basic 1.1 response.
#
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0</pre>
<h3 id="no-img-log">Ne pas tracer les requ&ecirc;tes pour des images dans le fichier de
trace des acc&egrave;s</h3>
<p>Dans cet exemple, les requ&ecirc;tes pour des images n'apparaissent pas
dans le fichier de trace des acc&egrave;s. Il peut &ecirc;tre facilement adapt&eacute; pour
emp&ecirc;cher le tra&ccedil;age de r&eacute;pertoires particuliers, ou de requ&ecirc;tes
en provenance de certains h&ocirc;tes.</p>
<pre class="prettyprint lang-config">SetEnvIf Request_URI \.gif image-request
SetEnvIf Request_URI \.jpg image-request
SetEnvIf Request_URI \.png image-request
CustomLog "logs/access_log" common env=!image-request</pre>
<h3 id="image-theft">Pr&eacute;vention du &laquo;&nbsp;Vol d'image&nbsp;&raquo;</h3>
<p>Cet exemple montre comment emp&ecirc;cher les utilisateurs ne faisant pas
partie de votre serveur d'utiliser des images de votre serveur comme
images en ligne dans leurs pages. Cette configuration n'est pas
recommand&eacute;e, mais elle peut fonctionner dans des circonstances bien
d&eacute;finies. Nous supposons que toutes vos images sont enregistr&eacute;es dans
un r&eacute;pertoire nomm&eacute; <code>/web/images</code>.</p>
<pre class="prettyprint lang-config">SetEnvIf Referer "^http://www\.example\.com/" local_referal
# Autorise les navigateurs qui n'envoient aucune information de Referer
SetEnvIf Referer "^$" local_referal
&lt;Directory "/web/images"&gt;
Require env local_referal
&lt;/Directory&gt;</pre>
<p>Pour plus d'informations sur cette technique, voir le tutoriel sur
ServerWatch
"<a href="https://www.serverwatch.com/guides/keeping-your-images-from-adorning-other-sites/">Keeping Your Images from Adorning Other Sites</a>".</p>
</div></div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="./en/env.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="./fr/env.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a> |
<a href="./ja/env.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/env.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./tr/env.html" hreflang="tr" rel="alternate" title="T&uuml;rk&ccedil;e">&nbsp;tr&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2026 The Apache Software Foundation.<br>Autoris&eacute; sous <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p></div><script><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
prettyPrint();
}
var langToggle = document.querySelector('.lang-toggle');
var topLang = document.querySelector('.toplang');
if (langToggle && topLang) {
langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); });
}
var qv = document.getElementById('quickview');
if (qv) {
document.body.appendChild(qv);
var qvBtn = document.createElement('button');
qvBtn.className = 'qv-toggle';
qvBtn.setAttribute('aria-label', 'Toggle page navigation');
qvBtn.innerHTML = '&#9776;';
document.body.appendChild(qvBtn);
qvBtn.addEventListener('click', function() {
var isOpen = qv.classList.toggle('open');
if (isOpen) {
qv.style.top = window.scrollY + 10 + 'px';
}
});
window.addEventListener('scroll', function() { qv.classList.remove('open'); });
}
//--><!]]></script>
</body></html>