1 <?xml version="1.0" encoding="ISO-8859-1" ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
4 <!-- English Revision : 558686 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
9 Licensed to the Apache Software Foundation (ASF) under one or more
10 contributor license agreements. See the NOTICE file distributed with
11 this work for additional information regarding copyright ownership.
12 The ASF licenses this file to You under the Apache License, Version 2.0
13 (the "License"); you may not use this file except in compliance with
14 the License. You may obtain a copy of the License at
16 http://www.apache.org/licenses/LICENSE-2.0
18 Unless required by applicable law or agreed to in writing, software
19 distributed under the License is distributed on an "AS IS" BASIS,
20 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 See the License for the specific language governing permissions and
22 limitations under the License.
25 <manualpage metafile="custom-error.xml.meta">
27 <title>Messages d'erreur personnalisés</title>
30 <p>Une fonctionnalité additionnelle permet aux webmasters de
31 configurer la réponse d'Apache à certaines erreurs ou problèmes.</p>
33 <p>Il est possible de définir des réponses personnalisables comme
34 devant être activées lorsque le serveur détecte une erreur ou un
37 <p>Si un script se crashe et provoque l'envoi d'une réponse "500
38 Server Error", cette dernière peut être remplacée soit par un texte
39 plus convivial, soit par une redirection vers une autre URL (locale
43 <section id="behavior">
44 <title>Comportement</title>
47 <title>Ancien comportement</title>
49 <p>httpd 1.3 de NCSA renvoyait d'antiques et obscurs messages
50 d'erreur ou de problème qui la plupart du temps n'avaient aucune
51 signification pour l'utilisateur, et ne permettaient pas de
52 journaliser les symptomes qui les avaient causés.</p>
56 <title>Nouveau comportement</title>
58 <p>Il est possible de demander au serveur :</p>
61 <li>d'afficher un autre texte à la place du message NCSA codé en
64 <li>rediriger vers une URL locale, ou</li>
66 <li>rediriger vers une URL externe.</li>
69 <p>La redirection vers une autre URL peut être utile, mais
70 seulement s'il est possible de transmettre certaines informations
71 qui pourront être utilisées pour expliquer et/ou journaliser
72 l'erreur ou le problème plus clairement.</p>
74 <p>Pour y parvenir, Apache va définir de nouvelles variables
75 d'environnement de style CGI :</p>
78 REDIRECT_HTTP_ACCEPT=*/*, image/gif, image/x-xbitmap,
80 REDIRECT_HTTP_USER_AGENT=Mozilla/1.1b2 (X11; I; HP-UX A.09.05
82 REDIRECT_PATH=.:/bin:/usr/local/bin:/etc<br />
83 REDIRECT_QUERY_STRING=<br />
84 REDIRECT_REMOTE_ADDR=121.345.78.123<br />
85 REDIRECT_REMOTE_HOST=ooh.ahhh.com<br />
86 REDIRECT_SERVER_NAME=crash.bang.edu<br />
87 REDIRECT_SERVER_PORT=80<br />
88 REDIRECT_SERVER_SOFTWARE=Apache/0.8.15<br />
89 REDIRECT_URL=/cgi-bin/buggy.pl
92 <p>Notez le préfixe <code>REDIRECT_</code>.</p>
94 <p>Au minimum <code>REDIRECT_URL</code> et
95 <code>REDIRECT_QUERY_STRING</code> seront transmises à la nouvelle
96 URL (en supposant qu'il s'agit d'une inclusion ou d'un script
97 cgi). Les autres variables ne seront présentes que si elles
98 existaient avant que l'erreur ou le problème ne survienne.
99 <strong>Aucune</strong> d'entre elles ne sera définie si votre
100 directive <directive module="core">ErrorDocument</directive>
101 spécifie une redirection <em>externe</em> (toute URL commençant
102 par un protocole du style <code>http:</code>, même si elle fait
103 référence au même hôte que le serveur).</p>
107 <section id="configuration">
108 <title>Configuration</title>
110 <p>L'utilisation de la directive <directive
111 module="core">ErrorDocument</directive> est activée pour les
112 fichiers .htaccess si la directive <directive
113 module="core">AllowOverride</directive> est positionnée dans cette
116 <p>Voici quelques exemples...</p>
119 ErrorDocument 500 /cgi-bin/crash-recover <br />
120 ErrorDocument 500 "Toutes nos excuses, notre script s'est crashé."
122 ErrorDocument 500 http://xxx/ <br />
123 ErrorDocument 404 /Lame_excuses/not_found.html <br />
124 ErrorDocument 401 /Subscription/how_to_subscribe.html
127 <p>La syntaxe est la suivante :</p>
130 ErrorDocument <code à 3 chiffres> <action>
133 <p>où action peut être :</p>
136 <li>Un texte à afficher. Entourez-le de guillemets (").</li>
138 <li>Une URL externe vers laquelle on sera redirigé.</li>
140 <li>Une URL locale vers laquelle on sera redirigé.</li>
144 <section id="custom">
145 <title>Messages d'erreur et de redirection personnalisés</title>
147 <p>Lors d'une redirection d'URL, Apache a modifié son comportement
148 et les scripts ou inclusions côté serveur disposent maintenant de
149 variables d'environnement supplémentaires.</p>
152 <title>Ancien comportement</title>
154 <p>Un script vers lequel une requête avait été redirigée
155 avait accès aux variables CGI standards, sans indication sur
156 l'origine de la redirection.</p>
160 <title>Nouveau comportement</title>
162 <p>Un nouveau jeu de variables d'environnement va être initialisé
163 à des fins d'utilisation par un script vers lequel une requête
164 aura été redirigée. Chaque nouvelle variable sera préfixée par
165 <code>REDIRECT_</code>. Les variables d'environnement
166 <code>REDIRECT_</code> sont créées à partir des variables
167 d'environnement CGI existant avant la redirection, et renommées en
168 leur ajoutant le préfixe <code>REDIRECT_</code> ; par exemple,
169 <code>HTTP_USER_AGENT</code> devient
170 <code>REDIRECT_HTTP_USER_AGENT</code>. En plus de ces nouvelles
171 variables, Apache va définir <code>REDIRECT_URL</code> et
172 <code>REDIRECT_STATUS</code> pour aider le script à remonter à
173 l'origine de la redirection. L'URL originale et l'URL de
174 redirection peuvent être enregistrées dans le journal des
177 <p>Si la directive ErrorDocument spécifie une redirection locale
178 vers un script CGI, ce dernier doit ajouter un en-tête
179 "<code>Status:</code>" dans sa sortie afin de s'assurer du bon
180 acheminement jusqu'au client de la condition d'erreur qui a
181 provoqué cette redirection. Par exemple, un script Perl spécifié
182 par une directive ErrorDocument pourrait contenir ce qui suit
187 print "Content-type: text/html\n"; <br />
188 printf "Status: %s Condition Intercepted\n", $ENV{"REDIRECT_STATUS"}; <br />
192 <p>Si un script est dédié à la gestion d'une condition d'erreur
193 spécifique, telle que <code>404 Not Found</code>, il
194 peut utiliser le code et le texte de l'erreur spécifiques à la
197 <p>Notez que si la réponse contient un en-tête
198 <code>Location:</code>, le script <em>doit</em> émettre un en-tête
199 <code>Status:</code> approprié (tel que
200 <code>302 Found</code>) afin de provoquer une redirection au
201 niveau du client. Dans le cas contraire, l'en-tête
202 <code>Location:</code> risque de n'avoir aucun effet.</p>