1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--Traduction anglais 1.14 -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content="HTML Tidy, see www.w3.org" />
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1" />
<title>Messages d'erreur personnalisés</title>
</head>
<body text="#000000" link="#0000ff" vlink="#000080"
bgcolor="#ffffff">
<div align="CENTER">
<img src="images/sub.gif" alt="[APACHE DOCUMENTATION]" />
<h3>Apache HTTP Server</h3>
</div>
<h1 align="CENTER">Messages d'erreur personnalisés</h1>
<h3>But</h3>
<p>Fonctionnalité additionnelle. Permet aux
administrateurs Web de personnaliser les réponses
données par Apache en cas de problèmes. Les
réponses personnalisées définies peuvent
être activables lorsque le serveur est à
même de détecter la cause du problème.</p>
<p>ex. si un script termine en faute, produisant une
réponse "500 Server Error", alors cette réponse
peut être remplacée soit par un texte quelque peu
plus explicatif soit par une redirection vers une autre URL
(locale ou externe).</p>
<h3>Ancien comportement</h3>
<p>La version 1.3 d'httpd du NCSA répondait souvent avec
des messages d'erreur ennuyeux et peu amènes qui
étaient sans signification pour l'utilisateur, et ne
donnait pas les symptômes qui pouvaient causer la
faute.</p>
<h3>Nouveau comportement</h3>
<p>On pourra désormais demander au serveur :</p>
<ol>
<li>D'afficher un autre texte, plutôt que les messages
standard NCSA, ou</li>
<li>rediriger l'utilisateur vers une URL locale, ou
encore</li>
<li>rediriger l'utilisateur vers une URL sur un autre
serveur.</li>
</ol>
<p>La redirection vers une autre URL peut être utile,
mais seulement si certaines informations peuvent être
passées et qui serviront à produire un affichage
ou un enregistrement du problème plus clair et
explicite.</p>
<p>Pour ce faire, Apache définira de nouvelles variables
d'environnement ( à la mode CGI), ex.</p>
<blockquote>
<code>REDIRECT_HTTP_ACCEPT=*/*, image/gif, image/x-xbitmap,
image/jpeg<br />
REDIRECT_HTTP_USER_AGENT=Mozilla/1.1b2 (X11; I; HP-UX
A.09.05 9000/712)<br />
REDIRECT_PATH=.:/bin:/usr/local/bin:/etc<br />
REDIRECT_QUERY_STRING=<br />
REDIRECT_REMOTE_ADDR=121.345.78.123<br />
REDIRECT_REMOTE_HOST=ooh.ahhh.com<br />
REDIRECT_SERVER_NAME=crash.bang.edu<br />
REDIRECT_SERVER_PORT=80<br />
REDIRECT_SERVER_SOFTWARE=Apache/0.8.15<br />
REDIRECT_URL=/cgi-bin/buggy.pl</code>
</blockquote>
<p>notez le préfixe <code>REDIRECT_</code>.</p>
<p>Seront au moins passés à la nouvelle URL les
variables <code>REDIRECT_URL</code> et
<code>REDIRECT_QUERY_STRING</code> (en supposant que l'URL de
redirection est un script CGI ou un Include CGI). Les autres
variables n'existeront que si elles existaient
déjà avant l'apparition du problème.
<b>Aucune de ces deux variables</b> ne sera initialisée
si votre Document d'erreur est le résultat d'une
redirection <i>externe</i> (c-à-d. toute adresse
commençant par le nom d'un plan de protocole comme
<code>http:</code>, même si le protocole invoqué
aboutit sur le même hôte que le serveur à
l'origine de la redirection).</p>
<h3>Configuration</h3>
<dl>
<dd>L'utilisation des documents "ErrorDocument" est
autorisée dans les fichiers .htaccess lorsque la
surcharge <a
href="mod/core.html#allowoverride">"FileInfo"</a> est
active.</dd>
<dd>En voici quelques exemples...</dd>
</dl>
<div style="margin-left: 2em">
<blockquote>
<code>ErrorDocument 500 /cgi-bin/crash-recover<br />
ErrorDocument 500 "Désolé, votre script
s'est vautré. Fichtre"<br />
ErrorDocument 500 http://xxx/<br />
ErrorDocument 404 /Lame_excuses/not_found.html<br />
ErrorDocument 401
/Subscription/how_to_subscribe.html</code>
</blockquote>
<dl>
<dd>La syntaxe admise est :</dd>
<dd><a href="mod/core.html#errordocument"><font
face="Courier New" size="2">ErrorDocument</font></a>
<code à trois chiffres> action</dd>
<dd>dans laquelle l'action peut être :</dd>
</dl>
</div>
<div style="margin-left: 4em">
<ol>
<li>Le texte devant être affiché. Le texte
devra être préfixé par un guillemet
("). Tout ce qui suit le guillemet sur la ligne est
affiché. <em>Notez : le préfixe (")
lui-même n'est pas affiché.</em></li>
<li>Une URL externe de redirection.</li>
<li>Une URL locale de redirection.</li>
</ol>
</div>
<hr />
<br />
<br />
<div style="margin-left: 2em">
<h2>Redirections et affichage d'erreurs
personnalisées</h2>
<h3>But</h3>
<dl>
<dd>Le comportement d'Apache lorsqu'il redirige des URL a
été modifié afin que d'autres
variables d'environnement additionnelles puissent
être rendues accessibles par un
script/server-include.</dd>
</dl>
<h3>Ancien comportement</h3>
<dl>
<dd>Les variables CGI standard étaient transmises au
script vers lequel était redirigé le client.
Aucune indication n'était transmise quant à
qui redirigeait le message.</dd>
</dl>
<h3>Nouveau comportement</h3>
<dl>
<dd>Un nouvel ensemble de variables d'environnement sera
initialisé, à l'intention du script vers
lequel le client a été redirigé.
Chaque nouvelle variable de cet ensemble est
préfixée par <code>REDIRECT_</code>. Les
variables d'environnement de type <code>REDIRECT_</code>
sont créées à partir des variables
d'environnement CGI qui existaient avant que n'intervienne
la redirection, en leur rajoutant le préfixe. Par
exemple <code>HTTP_USER_AGENT</code> devient
<code>REDIRECT_HTTP_USER_AGENT</code>. En plus de ces
variables, Apache définit les variables
<code>REDIRECT_URL</code> et <code>REDIRECT_STATUS</code>
pour aider le script à identifier l'origine de la
redirection. Dans la trace d'accès déduite
peuvent apparaître l'URL initiale ainsi que l'URL
vers laquelle est redirigée la requête.</dd>
</dl>
</div>
<hr />
<br />
<br />
<p>Si la directive ErrorDocument spécifie une
redirection local vers un script CGI, le script devra inclure
un champ "<samp>Status:</samp>" dans l'en-tête de sa
sortie afin de garantir la retransmiison complète vers
le client des conditions d'erreurs qui ont causé son
invocation. Par exemple un script Perl devrait inclure les
lignes suivantes :</p>
<pre>
:
print "Content-type: text/html\n";
printf "Status: %s Condition Intercepted\n", $ENV{"REDIRECT_STATUS"};
:
</pre>
<p>Si le script est dédié pour traité une
condition d'erreur particulière telle que
<samp>404 Not Found</samp>, il peut utiliser le code
spécifique et le message d'erreur à la place.</p>
<hr />
<h3 align="CENTER">Apache HTTP Server</h3>
<a href="./"><img src="images/index.gif" alt="Index" /></a>
</body>
</html>
|