From: Lucien Gentis Une fonctionnalité additionnelle permet aux webmasters de
- configurer la réponse d'Apache à certaines erreurs ou problèmes. Il est possible de définir des réponses personnalisables comme
- devant être activées lorsque le serveur détecte une erreur ou un
- problème. Si un script se crashe et provoque l'envoi d'une réponse "500
- Server Error", cette dernière peut être remplacée soit par un texte
- plus convivial, soit par une redirection vers une autre URL (locale
- ou externe). 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. httpd 1.3 de NCSA renvoyait d'antiques et obscurs messages
- d'erreur ou de problème qui la plupart du temps n'avaient aucune
- signification pour l'utilisateur, et ne permettaient pas de
- journaliser les symptomes qui les avaient causés. Les messages d'erreur personnalisés sont configurés via la
+ directive Il est possible de demander au serveur : La syntaxe de la directive où action peut être : 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 et/ou journaliser
- l'erreur ou le problème plus clairement.
+ ErrorDocument 500 /cgi-bin/crash-recover
+ ErrorDocument 500 http://erreur.example.com/erreur_serveur.html
+ ErrorDocument 404 /erreurs/non_trouve.html
+ ErrorDocument 401 /inscription/comment_s_inscrire.html
+ ErrorDocument est :
+
-
-
Pour y parvenir, Apache va définir de nouvelles variables - d'environnement de style CGI :
+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 :
+Notez le préfixe REDIRECT_.
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.
Au minimum REDIRECT_URL et
- REDIRECT_QUERY_STRING seront transmises à la nouvelle
- URL (en supposant qu'il s'agit d'une inclusion ou d'un script
- cgi). Les autres variables ne seront présentes que si elles
- existaient avant que l'erreur ou le problème ne survienne.
- Aucune d'entre elles ne sera définie si votre
+
Aucune d'entre elles ne sera définie si votre
directive http:, même si elle fait
référence au même hôte que le serveur).
L'utilisation de la directive
Voici quelques exemples...
- -La syntaxe est la suivante :
- -où action peut être :
- -Lors d'une redirection d'URL, Apache a modifié son comportement - et les scripts ou inclusions côté serveur disposent maintenant de - variables d'environnement supplémentaires.
- -Un script vers lequel une requête avait été redirigée - avait accès aux variables CGI standards, sans indication sur - l'origine de la redirection.
-Un nouveau jeu de variables d'environnement va être initialisé
- à des fins d'utilisation par un script vers lequel une requête
- aura été redirigée. Chaque nouvelle variable sera préfixée par
- REDIRECT_. Les variables d'environnement
- REDIRECT_ sont créées à partir des variables
- d'environnement CGI existant avant la redirection, et renommées en
- leur ajoutant le préfixe REDIRECT_ ; par exemple,
- HTTP_USER_AGENT devient
- REDIRECT_HTTP_USER_AGENT. En plus de ces nouvelles
- variables, Apache va définir REDIRECT_URL et
- REDIRECT_STATUS pour aider le script à remonter à
- l'origine de la redirection. L'URL originale et l'URL de
- redirection peuvent être enregistrées dans le journal des
- accès.
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 ErrorDocument spécifie une redirection locale vers un script CGI, ce dernier doit ajouter un en-tête @@ -195,11 +166,47 @@ place.
Notez que si la réponse contient un en-tête
- Location:, le script doit émettre un en-tête
- Status: approprié (tel que
- 302 Found) afin de provoquer une redirection au
- niveau du client. Dans le cas contraire, l'en-tête
- Location: risque de n'avoir aucun effet.
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 :
+ +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
+