mirror of
https://github.com/apache/httpd.git
synced 2025-08-13 14:40:20 +00:00

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@788931 13f79535-47bb-0310-9956-ffa450edef68
206 lines
8.3 KiB
Plaintext
206 lines
8.3 KiB
Plaintext
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
|
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
|
|
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
|
|
<!-- English Revision : 558686 -->
|
|
<!-- French translation : Lucien GENTIS -->
|
|
<!-- Reviewed by : Vincent Deffontaines -->
|
|
|
|
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
contributor license agreements. See the NOTICE file distributed with
|
|
this work for additional information regarding copyright ownership.
|
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
(the "License"); you may not use this file except in compliance with
|
|
the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<manualpage metafile="custom-error.xml.meta">
|
|
|
|
<title>Messages d'erreur personnalisés</title>
|
|
|
|
<summary>
|
|
<p>Une fonctionnalité additionnelle permet aux webmasters de
|
|
configurer la réponse d'Apache à certaines erreurs ou problèmes.</p>
|
|
|
|
<p>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.</p>
|
|
|
|
<p>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).</p>
|
|
</summary>
|
|
|
|
<section id="behavior">
|
|
<title>Comportement</title>
|
|
|
|
<section>
|
|
<title>Ancien comportement</title>
|
|
|
|
<p>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.</p>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Nouveau comportement</title>
|
|
|
|
<p>Il est possible de demander au serveur :</p>
|
|
|
|
<ol>
|
|
<li>d'afficher un autre texte à la place du message NCSA codé en
|
|
dur, ou</li>
|
|
|
|
<li>rediriger vers une URL locale, ou</li>
|
|
|
|
<li>rediriger vers une URL externe.</li>
|
|
</ol>
|
|
|
|
<p>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.</p>
|
|
|
|
<p>Pour y parvenir, Apache va définir de nouvelles variables
|
|
d'environnement de style CGI :</p>
|
|
|
|
<example>
|
|
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
|
|
</example>
|
|
|
|
<p>Notez le préfixe <code>REDIRECT_</code>.</p>
|
|
|
|
<p>Au minimum <code>REDIRECT_URL</code> et
|
|
<code>REDIRECT_QUERY_STRING</code> 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.
|
|
<strong>Aucune</strong> d'entre elles ne sera définie si votre
|
|
directive <directive module="core">ErrorDocument</directive>
|
|
spécifie une redirection <em>externe</em> (toute URL commençant
|
|
par un protocole du style <code>http:</code>, même si elle fait
|
|
référence au même hôte que le serveur).</p>
|
|
</section>
|
|
</section>
|
|
|
|
<section id="configuration">
|
|
<title>Configuration</title>
|
|
|
|
<p>L'utilisation de la directive <directive
|
|
module="core">ErrorDocument</directive> est activée pour les
|
|
fichiers .htaccess si la directive <directive
|
|
module="core">AllowOverride</directive> est positionnée dans cette
|
|
optique.</p>
|
|
|
|
<p>Voici quelques exemples...</p>
|
|
|
|
<example>
|
|
ErrorDocument 500 /cgi-bin/crash-recover <br />
|
|
ErrorDocument 500 "Toutes nos excuses, notre script s'est crashé."
|
|
<br />
|
|
ErrorDocument 500 http://xxx/ <br />
|
|
ErrorDocument 404 /Lame_excuses/not_found.html <br />
|
|
ErrorDocument 401 /Subscription/how_to_subscribe.html
|
|
</example>
|
|
|
|
<p>La syntaxe est la suivante :</p>
|
|
|
|
<example>
|
|
ErrorDocument <code à 3 chiffres> <action>
|
|
</example>
|
|
|
|
<p>où action peut être :</p>
|
|
|
|
<ol>
|
|
<li>Un texte à afficher. Entourez-le de guillemets (").</li>
|
|
|
|
<li>Une URL externe vers laquelle on sera redirigé.</li>
|
|
|
|
<li>Une URL locale vers laquelle on sera redirigé.</li>
|
|
</ol>
|
|
</section>
|
|
|
|
<section id="custom">
|
|
<title>Messages d'erreur et de redirection personnalisés</title>
|
|
|
|
<p>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.</p>
|
|
|
|
<section>
|
|
<title>Ancien comportement</title>
|
|
|
|
<p>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.</p>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Nouveau comportement</title>
|
|
|
|
<p>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
|
|
<code>REDIRECT_</code>. Les variables d'environnement
|
|
<code>REDIRECT_</code> sont créées à partir des variables
|
|
d'environnement CGI existant avant la redirection, et renommées en
|
|
leur ajoutant le préfixe <code>REDIRECT_</code> ; par exemple,
|
|
<code>HTTP_USER_AGENT</code> devient
|
|
<code>REDIRECT_HTTP_USER_AGENT</code>. En plus de ces nouvelles
|
|
variables, Apache va définir <code>REDIRECT_URL</code> et
|
|
<code>REDIRECT_STATUS</code> 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.</p>
|
|
|
|
<p>Si la directive ErrorDocument spécifie une redirection locale
|
|
vers un script CGI, ce dernier doit ajouter un en-tête
|
|
"<code>Status:</code>" dans sa sortie afin de s'assurer du bon
|
|
acheminement jusqu'au client de la condition d'erreur qui a
|
|
provoqué cette redirection. Par exemple, un script Perl spécifié
|
|
par une directive ErrorDocument pourrait contenir ce qui suit
|
|
:</p>
|
|
|
|
<example>
|
|
... <br />
|
|
print "Content-type: text/html\n"; <br />
|
|
printf "Status: %s Condition Intercepted\n", $ENV{"REDIRECT_STATUS"}; <br />
|
|
...
|
|
</example>
|
|
|
|
<p>Si un script est dédié à la gestion d'une condition d'erreur
|
|
spécifique, telle que <code>404 Not Found</code>, il
|
|
peut utiliser le code et le texte de l'erreur spécifiques à la
|
|
place.</p>
|
|
|
|
<p>Notez que si la réponse contient un en-tête
|
|
<code>Location:</code>, le script <em>doit</em> émettre un en-tête
|
|
<code>Status:</code> approprié (tel que
|
|
<code>302 Found</code>) afin de provoquer une redirection au
|
|
niveau du client. Dans le cas contraire, l'en-tête
|
|
<code>Location:</code> risque de n'avoir aucun effet.</p>
|
|
</section>
|
|
</section>
|
|
</manualpage>
|