<-
Apache > Serveur HTTP > Documentation > Version 2.4

Messages d'erreur personnalis�s

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

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.

top

Configuration

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 "Dsol�, 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 :

  1. Une URL de redirection local (si l'action commence par un "/").
  2. Une URL de redirection externe (si action est une URL valide).
  3. Le texte � afficher (si l'action ne r�pond � aucune des deux conditions pr�c�dentes). Entourez le texte de guillemets (") s'il contient plusieurs mots.

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.

top

Variables disponibles

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).

top

Personnalisation des messages d'erreur

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.

top

Messages d'erreur personnalis�s multilingues

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.

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

top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.
Comments are disabled for this page at the moment.