From 3746684f54e8897ab588b00869febc8e1cd3fff1 Mon Sep 17 00:00:00 2001
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
+