<-
Apache > Serveur HTTP > Documentation > Version 2.0

Please note

This document refers to the 2.0 version of Apache httpd, which is no longer maintained.
Upgrade, and refer to the current version of httpd instead, documented at:
You may follow this link to go to the current version of this document.

Apache et les variables d'environnement

Langues Disponibles:  en  |  es  |  fr  |  ja  |  ko  |  tr 

Cette traduction peut �tre p�rim�e. Consultez la version Anglaise pour les changements r�cents.

Le serveur HTTP Apache permet de conserver et d'utiliser certaines informations dans des variables appel�es variables d'environnement. Ces informations peuvent servir � contr�ler divers param�tres tels que la journalisation ou le contr�le d'acc�s. Ces variables sont �galement utilis�es pour communiquer avec d'autres programmes, comme les scripts CGI. Ce document traite des mani�res de manipuler et de tirer parti de ces variables.

Bien qu'elles soient appel�es variables d'environnement, il ne s'agit pas de variables d'environnement contr�l�es par le syst�me d'exploitation. Ces variables sont conserv�es, et manipul�es suivant des m�canismes internes � Apache. Elles sont transform�es en v�ritables variables d'environnement (au sens syst�me) seulement quand elles doivent �tre pass�es � des scripts CGI ou � des scripts 'Server Side Includes'. Pour manipuler l'environnement du syst�me d'exploitation sur lequel tourne un serveur Apache, il suffit d'utiliser les m�thodes standard fournies par l'interpr�teur de commandes du syst�me d'exploitation.

top

D�finir les variables d'environnement

Manipulations simples de l'environnement

La m�thode la plus simple pour d�finir une variable d'environnement dans Apache est d'utiliser la directive SetEnv. Les variables peuvent �galement �tre charg�es depuis l'interpr�teur de commandes � partir duquel le serveur a �t� d�marr�, au moyen de la directive PassEnv.

Param�trage selon les requ�tes

Dans un but de souplesse, les directives que mod_setenvif permet d'utiliser sont ajustables en fonction de certaines caract�ristiques des requ�tes parvenant au serveur. Par exemple, il est possible de d�finir une variable seulement si la requ�te provient d'un certain type de navigateur (User-Agent), ou bien si un champ Referer bien pr�cis est trouv�. Une souplesse encore plus grande est offerte par la directive RewriteRule du module mod_rewrite qui accepte le param�tre [E=...] pour d�finir des variables d'environnement.

Identifiants uniques

Enfin, la variable d'environnement UNIQUE_ID est cr��e par mod_unique_id pour chaque requ�te, de mani�re � �tre unique et donc repr�sentative de chaque requ�te.

Variables CGI standard

En plus de toutes les variables d'environnement d�finies dans la configuration d'Apache et celles du syst�me d'exploitation, les sp�cifications CGI demandent que certaines variables d'environnement contenant des informations propres � la requ�te soient toujours pass�es aux scripts CGI et aux pages SSI.

Probl�mes possibles

top

Utilisation des variables d'environnement

Scripts CGI

Une des principales utilisations des variables d'environnement est l'envoi d'informations aux scripts CGI. Comme pr�cis� ci- avant, l'environnement pass� aux scripts CGI contient des informations standard au sujet de la requ�te en plus de toutes les variables initialis�es au travers de la configuration d'Apache. Pour plus de d�tails, consultez le tutorial CGI.

Pages SSI

Les documents analys�s par le serveur (documents SSI), g�r�s par le filtre INCLUDES de mod_include, peuvent demander l'affichage de variables d'environnement au moyen de l'�l�ment echo, et peuvent les utiliser pour personnaliser des pages en fonctions de certaines caract�ristiques de la requ�te. Apache permet aussi l'utilisation de pages SSI avec les variables d'environnement standard CGI comme discut� ci-avant. Consultez le tutorial SSI pour plus d'informations.

Contr�le d'acc�s

Les droits d'acc�s au serveur peuvent �tre contr�l�s au moyen de variables d'environnement en utilisant les directives allow from env= et deny from env=. Celles ci, utilis�es avec SetEnvIf, permettent un contr�le d'acc�s au serveur tr�s souple en fonction de caract�ristiques propres au client. Par exemple, il est possible d'utiliser ces directives pour refuser l'acc�s au serveur � certains navigateurs (User-Agent).

Journalisation sous certaines conditions

Les variables d'environnement peuvent �tre enregistr�es dans le journal des acc�s ('access log') au moyen de l'option %e de LogFormat. De plus, la d�cision d'enregistrer ou non certaines requ�tes peut �tre prise en fonction des variables d'environnement au moyen de la directive CustomLog. Cette m�thode, utilis�e avec la directive SetEnvIf, permet un contr�le tr�s souple de l'enregistrement des requ�tes. Par exemple, il est possible de ne pas garder de trace des requ�tes demandant des noms de fichiers se terminant par gif, ou de n'enregistrer que les requ�tes des clients situ�s hors du sous-r�seau auquel appartient le serveur.

Personnaliser les en-t�tes des r�ponses HTTP

La directive Header peut tirer parti de l'existence ou non d'une variable d'environnement afin de choisir d'inclure certains en-t�tes HTTP dans la r�ponse retourn�e au client. Ceci permet, par exemple, d'envoyer un certain en-t�te de r�ponse seulement si un en-t�te similaire a �t� positionn� dans la requ�te �manant du client.

Activation des filtres externes

Il est possible d'utiliser une variable d'environnement pour activer les filtres externes (g�r�s par mod_ext_filter au moyen de la directive ExtFilterDefine) gr�ce aux options disableenv= et enableenv=.

R��criture d'URL

La forme %{ENV:...} de TestString, dans la directive RewriteCond, permet au moteur de r��criture de mod_rewrite d'utiliser les variables d'environnement pour contr�ler les r��critures. Notez que toutes les variables internes � mod_rewrite, accessibles sans le pr�fixe ENV:, ne sont pas des variables d'environnement d'Apache. Elles sont uniquement propres � mod_rewrite et ne peuvent pas �tre utilis�es par d'autres modules.

top

Variables d'environnement sp�ciales

Certains probl�mes li�s � l'interop�rabilit� ont conduit � la mise en place de m�canismes sp�ciaux, qui modifient le fonctionnement d'Apache selon le type des clients auxquels il r�pond. Afin de garantir la plus grande souplesse possible, ces m�canismes sont contr�l�s par des variables d'environnement sp�ciales, telles que BrowserMatch, bien qu'on puisse �galement utiliser SetEnv et PassEnv par exemple.

downgrade-1.0

Ceci oblige Apache � traiter la requ�te comme du HTTP/1.0 m�me si elle a �t� construite sur une norme plus r�cente.

force-no-vary

Ceci provoque l'effacement de tous les champs Vary de l'en-t�te de r�ponse avant qu'il ne soit envoy� au client. Certains clients interpr�tent mal ce champ (voir les probl�mes avec certains clients), et initialiser cette variable peut permettre de r�soudre ce probl�me. Cette variable requiert �galement l'utilisation de force-response-1.0.

force-response-1.0

Ceci oblige Apache � n'envoyer que des r�ponses en HTTP/1.0 aux clients r�alisant une requ�te en HTTP/1.0. Cette fonction a �t� impl�ment�e au d�part pour r�soudre un probl�me avec les serveurs mandataires d'AOL. Certains clients HTTP/1.0 r�agissent mal quand ils re�oivent une r�ponse en HTTP/1.1, ce qui peut poser des probl�mes d'interop�rabilit� avec eux.

gzip-only-text/html

Si cette variable est positionn�e avec une valeur de "1", le filtre de sortie DEFLATE du module mod_deflate se retrouve d�sactiv� pour les documents dont le type mime n'est pas text/html.

no-gzip

Si cette variable est initialis�e, le filtre DEFLATE du module mod_deflate est totalement d�sactiv�.

nokeepalive

Si cette variable est initialis�e, les fonctions KeepAlive sont d�sactiv�es.

prefer-language

Cette variable modifie le fonctionnement de mod_negotiation. Si la variable contient un marqueur de langue (comme en, ja ou x-klingon), le module mod_negotiation va tenter de fournir une r�ponse dans cette langue parmi les variantes possibles. Si aucune de ces variantes n'existe, une n�gociation normale aura lieu.

redirect-carefully

Cette variable rend le serveur plus attentif quand il doit envoyer une redirection au client. Cette variable est habituellement utilis�e quand un client a un probl�me connu pour g�rer les redirections. Cette variable a �t� impl�ment�e pour pallier � un probl�me du logiciel WebFolders de Microsoft qui ne sait pas g�rer correctement les redirections vers les r�pertoires via les m�thodes DAV.

suppress-error-charset

Existe depuis la version 2.0.40

Quand Apache envoie une redirection en r�ponse � une requ�te, la r�ponse contient un message � afficher par le client, au cas o� il ne peut suivre automatiquement la redirection. Le fonctionnement par d�faut d'Apache est d'�crire ce texte avec le jeu de caract�re qu'il utilise, c'est � dire ISO-8859-1.

Cependant, si la redirection pointe vers une page pr�sentant un jeu de caract�res diff�rent, certains navigateurs bugg�s utilisent le jeu de caract�res du texte de la redirection, au lieu de celui de la page qu'ils affichaient. De ce fait, un texte en grec serait mal affich�.

Si cette variable d'environnement est utilis�e, Apache n'indiquera pas le jeu de caract�re dans le texte de la redirection, ce qui permet � ces navigateurs d'afficher correctement la page de destination.

top

Exemples

Modifier le fonctionnement d'un protocole pour les clients qui le g�rent mal

Il est conseill� de placer les lignes suivantes dans httpd.conf afin de g�rer des probl�mes connus de certains clients.

#
# Les directives ci-apr�s modifient le fonctionnement standard de HTTP.
# La premi�re directive d�sactive les fonctions keepalive pour les 
# navigateurs disant s'appeler 'Netscape 2.x'
# Il existe des probl�mes connus avec ces navigateurs.
# La deuxi�me directive g�re Internet Explorer 4.0b2 de Microsoft qui
# n'impl�mente pas correctement HTTP/1.1 et qui ne supporte pas les 
# fonctions keepalive quand la r�ponse du serveur contient des codes 301 
# ou 302 (redirections)
#
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0

#
# Les directives ci-dessous d�sactivent HTTP/1.1 pour les navigateurs qui 
# violent les sp�cifications HTTP/1.0, en ne sachant pas analyser des 
# r�ponses basiques en HTTP/1.1.
#
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0

Ne pas enregistrer les requ�tes pour des images dans le journal des acc�s

Cet exemple montre comment ne pas enregistrer les requ�tes � destination d'images dans le journal des acc�s. Il est facile de le modifier, pour limiter l'enregistrement � certains r�pertoires, ou pour des requ�tes venant de machines pr�cises.

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

Emp�cher le � vol d'images ï¿½

Cet exemple montre comment emp�cher le chargement d'images de votre serveur depuis des pages qui ne sont pas h�berg�es sur celui-ci. Cette configuration n'est pas conseill�e, mais elle peut �tre utile dans certaines circonstances. Il est suppos� ici que toutes les images sont stock�es dans le r�pertoire /web/images.

SetEnvIf Referer "^http://www.example.com/" local_referal
# Autorise les navigateurs qui n'envoient pas de champ Referer
SetEnvIf Referer "^$" local_referal
<Directory /web/images>
   Order Deny,Allow
   Deny from all
   Allow from env=local_referal
</Directory>

Pour plus d'informations sur cette technique, consultez le tutorial ApacheToday � Keeping Your Images from Adorning Other Sites ï¿½.

Langues Disponibles:  en  |  es  |  fr  |  ja  |  ko  |  tr