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 : 1361157 -->
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>Le serveur HTTP Apache fournit des messages d'erreur génériques
31 pour les codes de statut 4xx ou 5xx ; ces messages sont cependant
32 relativement austères, imprécis, et peuvent s'avérer intimidants
33 pour les visiteurs du site. Si vous le souhaitez, vous pouvez
34 afficher des messages d'erreur plus conviviaux, dans un langage
35 autre que l'anglais, ou même sous une forme plus en adéquation avec
36 le style de votre site.</p>
38 <p>Il est possible de définir des messages d'erreur personnalisés
39 pour chaque code de statut HTTP associé à une condition d'erreur -
40 c'est à dire tout code de statut 4xx ou 5xx.</p>
42 <p>De plus, il est possible de
43 personnaliser le message d'erreur en fonction d'un jeu de valeurs
44 fourni, en utilisant les <a href="howto/ssi.html">Inclusions Côté
45 Serveur (SSI)</a>. Un programme CGI ou un autre gestionnaire
46 dynamique (PHP, mod_perl, etc...) peut aussi utiliser ces variables
47 pour gérer les conditions d'erreur.</p>
52 <section id="configuration"><title>Configuration</title>
54 <p>Les messages d'erreur personnalisés sont configurés via la
55 directive <directive module="core">ErrorDocument</directive>, qui
56 peut être utilisée dans un contexte global, serveur virtuel ou
57 répertoire. On peut utiliser cette directive dans les fichiers
58 .htaccess si <directive module="core">AllowOverride</directive> est
59 définie à FileInfo.</p>
61 <highlight language="config">
62 ErrorDocument 500 "Désolé, notre script s'est
63 crashé ; comme c'est dommage !"<br />
64 ErrorDocument 500 /cgi-bin/crash-recover<br />
65 ErrorDocument 500 http://error.example.com/server_error.html<br />
66 ErrorDocument 404 /errors/not_found.html <br />
67 ErrorDocument 401 /subscription/how_to_subscribe.html
70 <p>La syntaxe de la directive <code>ErrorDocument</code> est :</p>
71 <highlight language="config">
72 ErrorDocument <code_3_chiffres> <action>
74 <p>où action peut être traitée comme :</p>
76 <li>Une URL de redirection local (si l'action commence par un "/").</li>
77 <li>Une URL de redirection externe (si action est une URL valide).</li>
78 <li>Le texte à afficher (si l'action ne répond à aucune des
79 deux conditions précédentes). Entourez le texte de guillemets (")
80 s'il contient plusieurs mots.</li>
83 <p>Dans le cas d'une redirection vers une URL locale, des variables
84 d'environnement supplémentaires sont définies de façon à ce que la
85 réponse puisse être personnalisée par la suite. Elles ne sont pas
86 envoyées aux URLs externes.</p>
90 <section id="variables"><title>Variables disponibles</title>
92 <p>La redirection vers une autre URL peut être utile, mais
93 seulement s'il est possible de transmettre certaines informations
94 qui pourront être utilisées pour expliquer ou journaliser
95 la condition d'erreur ou le problème plus clairement.</p>
97 <p>Pour y parvenir, lorsque la redirection d'erreur est envoyée,
98 des variables d'environnement supplémentaires sont définies à
99 partir des en-têtes de la requête originale en préfixant le nom
100 d'origine de l'en-tête par 'REDIRECT_', ce qui permet de fournir au
101 message d'erreur le contexte de la requête originelle.</p>
103 <p>Par exemple, en plus des variables d'environnement habituelles,
104 vous pouvez recevoir ce qui suit :</p>
108 REDIRECT_HTTP_ACCEPT=*/*, image/gif, image/jpeg, image/png<br />
109 REDIRECT_HTTP_USER_AGENT=Mozilla/5.0 Fedora/3.5.8-1.fc12 Firefox/3.5.8<br />
110 REDIRECT_PATH=.:/bin:/usr/local/bin:/sbin<br />
111 REDIRECT_QUERY_STRING=<br />
112 REDIRECT_REMOTE_ADDR=121.345.78.123<br />
113 REDIRECT_REMOTE_HOST=client.example.com<br />
114 REDIRECT_SERVER_NAME=www.example.edu<br />
115 REDIRECT_SERVER_PORT=80<br />
116 REDIRECT_SERVER_SOFTWARE=Apache/2.2.15<br />
117 REDIRECT_URL=/cgi-bin/buggy.pl
120 <p>Les variables d'environnement <code>REDIRECT_</code> sont
121 créées à partir des variables d'environnement préexistantes à la
122 redirection qui sont préfixées par la chaîne <code>REDIRECT_</code> ;
123 par exemple, <code>HTTP_USER_AGENT</code> devient
124 <code>REDIRECT_HTTP_USER_AGENT</code>.</p>
126 <p><code>REDIRECT_URL</code>, <code>REDIRECT_STATUS</code>, et
127 <code>REDIRECT_QUERY_STRING</code> sont systématiquement définies,
128 les autres variables n'étant définies que si l'en-tête
129 correspondant existait avant la condition d'erreur.</p>
131 <p><strong>Aucune</strong> d'entre elles ne sera définie si votre
132 directive <directive module="core">ErrorDocument</directive>
133 spécifie une redirection <em>externe</em> (toute URL commençant
134 par un protocole du style <code>http:</code>, même si elle fait
135 référence au même hôte que le serveur).</p>
139 <section id="custom"><title>Personnalisation des messages d'erreur</title>
142 <p>Si vous faites pointer votre directive
143 <code>ErrorDocument</code> vers certains gestionnaires
144 dynamiques comme les inclusions côté serveur, les scripts CGI ou
145 d'autres gestionnaires, vous pouvez utiliser les variables
146 d'environnement supplémentaires disponibles pour personnaliser
150 <p>Si la directive ErrorDname-basedocument spécifie une redirection locale
151 vers un script CGI, ce dernier doit ajouter un en-tête
152 "<code>Status:</code>" dans sa sortie afin de s'assurer du bon
153 acheminement jusqu'au client de la condition d'erreur qui a
154 provoqué cette redirection. Par exemple, un script Perl spécifié
155 par une directive ErrorDocument pourrait contenir ce qui suit
158 <highlight language="perl">
160 print "Content-type: text/html\n"; <br />
161 printf "Status: %s Condition Intercepted\n", $ENV{"REDIRECT_STATUS"}; <br />
165 <p>Si un script est dédié à la gestion d'une condition d'erreur
166 spécifique, telle que <code>404 Not Found</code>, il
167 peut utiliser le code et le texte de l'erreur spécifiques à la
170 <p>Notez que si la réponse contient un en-tête
171 <code>Location:</code> (afin d'initier une redirection côté
172 client), le script <em>doit</em> émettre un en-tête approprié
173 (comme <code>302 Found</code>). Dans le cas contraire,
174 l'en-tête <code>Location:</code> ne produira aucun effet.</p>
177 <section id="multi-lang"><title>Messages d'erreur personnalisés
180 <p>Vous trouverez dans la distribution du serveur HTTP Apache un
181 répertoire contenant des messages d'erreur personnalisés traduits en
182 16 langues différentes. Pour activer cette fonctionnalité, vous
183 pouvez aussi inclure un fichier de configuration qui se trouve dans
184 le répertoire de configuration <code>conf/extra</code>.</p>
186 <p>Dans le fichier de configuration de votre serveur, vous trouverez
187 un groupe de lignes du style :</p>
189 <highlight language="config">
190 # Multi-language error messages<br />
191 #Include conf/extra/httpd-multilang-errordoc.conf
194 <p>Décommentez la ligne <code>Include</code> pour activer cette
195 fonctionnalité, et présenter des messages d'erreur dont le langage
196 sera négocié en fonction du langage préféré défini au niveau du
197 navigateur du client.</p>
199 <p>De plus, ces documents contiennent diverses variables
200 <code>REDIRECT_</code>, de façon à ce que l'utilisateur final
201 dispose d'informations supplémentaires à propos de ce qui a pu se
202 produire, et de ce qu'il est susceptible de faire maintenant.</p>
204 <p>Ces documents peuvent être personnalisés en fournissant autant
205 d'informations utiles que vous le souhaitez aux utilisateurs à
206 propos de votre site, et de ce qu'ils sont susceptibles d'y trouver.</p>
208 <p>Pour pouvoir utiliser cette fonctionnalité, vous devez activer
209 <module>mod_include</module> et <module>mod_negotiation</module>.</p>