Serveur Apache HTTP Version 2.4
Le serveur HTTP Apache fournit des messages d'erreur g�n�riques pour les codes de statut 4xx ou 5xx ; ces messages sont cependant relativement aust�res, impr�cis, et peuvent s'av�rer intimidants pour les visiteurs du site. Si vous le souhaitez, vous pouvez afficher des messages d'erreur plus conviviaux, dans un langage autre que l'anglais, ou m�me sous une forme plus en ad�quation avec le style de votre site.
Il est possible de d�finir des messages d'erreur personnalis�s pour chaque code de statut HTTP associ� � une condition d'erreur - c'est � dire tout code de statut 4xx ou 5xx.
De plus, il est possible de personnaliser le message d'erreur en fonction d'un jeu de valeurs fourni, en utilisant les Inclusions C�t� Serveur (SSI). Un programme CGI ou un autre gestionnaire dynamique (PHP, mod_perl, etc...) peut aussi utiliser ces variables pour g�rer les conditions d'erreur.
Les messages d'erreur personnalis�s sont configur�s via la
directive ErrorDocument
, qui
peut �tre utilis�e dans un contexte global, serveur virtuel ou
r�pertoire. On peut utiliser cette directive dans les fichiers
.htaccess si AllowOverride
est
d�finie � FileInfo.
ErrorDocument 500 "D�sol�, notre script s'est crash� ; comme c'est dommage !"
ErrorDocument 500 /cgi-bin/crash-recover
ErrorDocument 500 http://error.example.com/server_error.html
ErrorDocument 404 /errors/not_found.html
ErrorDocument 401 /subscription/how_to_subscribe.html
La syntaxe de la directive ErrorDocument
est :
ErrorDocument <code_3_chiffres> <action>
o� action peut �tre trait�e comme :
Dans le cas d'une redirection vers une URL locale, des variables d'environnement suppl�mentaires sont d�finies de fa�on � ce que la r�ponse puisse �tre personnalis�e par la suite. Elles ne sont pas envoy�es aux URLs externes.
La redirection vers une autre URL peut �tre utile, mais seulement s'il est possible de transmettre certaines informations qui pourront �tre utilis�es pour expliquer ou journaliser la condition d'erreur ou le probl�me plus clairement.
Pour y parvenir, lorsque la redirection d'erreur est envoy�e, des variables d'environnement suppl�mentaires sont d�finies � partir des en-t�tes de la requ�te originale en pr�fixant le nom d'origine de l'en-t�te par 'REDIRECT_', ce qui permet de fournir au message d'erreur le contexte de la requ�te originelle.
Par exemple, en plus des variables d'environnement habituelles, vous pouvez recevoir ce qui suit :
REDIRECT_HTTP_ACCEPT=*/*, image/gif, image/jpeg, image/png
REDIRECT_HTTP_USER_AGENT=Mozilla/5.0 Fedora/3.5.8-1.fc12 Firefox/3.5.8
REDIRECT_PATH=.:/bin:/usr/local/bin:/sbin
REDIRECT_QUERY_STRING=
REDIRECT_REMOTE_ADDR=121.345.78.123
REDIRECT_REMOTE_HOST=client.example.com
REDIRECT_SERVER_NAME=www.example.edu
REDIRECT_SERVER_PORT=80
REDIRECT_SERVER_SOFTWARE=Apache/2.2.15
REDIRECT_URL=/cgi-bin/buggy.pl
Les variables d'environnement REDIRECT_
sont
cr��es � partir des variables d'environnement pr�existantes � la
redirection qui sont pr�fix�es par la cha�ne REDIRECT_
;
par exemple, HTTP_USER_AGENT
devient
REDIRECT_HTTP_USER_AGENT
.
REDIRECT_URL
, REDIRECT_STATUS
, et
REDIRECT_QUERY_STRING
sont syst�matiquement d�finies,
les autres variables n'�tant d�finies que si l'en-t�te
correspondant existait avant la condition d'erreur.
Aucune d'entre elles ne sera d�finie si votre
directive ErrorDocument
sp�cifie une redirection externe (toute URL commen�ant
par un protocole du style http:
, m�me si elle fait
r�f�rence au m�me h�te que le serveur).
Si vous faites pointer votre directive
ErrorDocument
vers certains gestionnaires
dynamiques comme les inclusions c�t� serveur, les scripts CGI ou
d'autres gestionnaires, vous pouvez utiliser les variables
d'environnement suppl�mentaires disponibles pour personnaliser
le message.
Si la directive ErrorDname-basedocument sp�cifie une redirection locale
vers un script CGI, ce dernier doit ajouter un en-t�te
"Status:
" dans sa sortie afin de s'assurer du bon
acheminement jusqu'au client de la condition d'erreur qui a
provoqu� cette redirection. Par exemple, un script Perl sp�cifi�
par une directive ErrorDocument pourrait contenir ce qui suit
:
... print "Content-type: text/html\n";
printf "Status: %s Condition Intercepted\n", $ENV{"REDIRECT_STATUS"};
...
Si un script est d�di� � la gestion d'une condition d'erreur
sp�cifique, telle que 404 Not Found
, il
peut utiliser le code et le texte de l'erreur sp�cifiques � la
place.
Notez que si la r�ponse contient un en-t�te
Location:
(afin d'initier une redirection c�t�
client), le script doit �mettre un en-t�te appropri�
(comme 302 Found
). Dans le cas contraire,
l'en-t�te Location:
ne produira aucun effet.
Vous trouverez dans la distribution du serveur HTTP Apache un
r�pertoire contenant des messages d'erreur personnalis�s traduits en
16 langues diff�rentes. Pour activer cette fonctionnalit�, vous
pouvez aussi inclure un fichier de configuration qui se trouve dans
le r�pertoire de configuration conf/extra
.
Dans le fichier de configuration de votre serveur, vous trouverez un groupe de lignes du style :
# Multi-language error messages
#Include conf/extra/httpd-multilang-errordoc.conf
D�commentez la ligne Include
pour activer cette
fonctionnalit�, et pr�senter des messages d'erreur dont le langage
sera n�goci� en fonction du langage pr�f�r� d�fini au niveau du
navigateur du client.
De plus, ces documents contiennent diverses variables
REDIRECT_
, de fa�on � ce que l'utilisateur final
dispose d'informations suppl�mentaires � propos de ce qui a pu se
produire, et de ce qu'il est susceptible de faire maintenant.
Ces documents peuvent �tre personnalis�s en fournissant autant d'informations utiles que vous le souhaitez aux utilisateurs � propos de votre site, et de ce qu'ils sont susceptibles d'y trouver.
Pour pouvoir utiliser cette fonctionnalit�, vous devez activer
mod_include
et mod_negotiation
.