]> granicus.if.org Git - apache/blob - docs/manual/custom-error.html.en
xforms
[apache] / docs / manual / custom-error.html.en
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
4         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5               This file is generated from xml source: DO NOT EDIT
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7       -->
8 <title>Custom Error Responses - Apache HTTP Server</title>
9 <link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="./style/css/prettify.css" />
12 <script src="./style/scripts/prettify.js" type="text/javascript">
13 </script>
14
15 <link href="./images/favicon.ico" rel="shortcut icon" /></head>
16 <body id="manual-page"><div id="page-header">
17 <p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p>
18 <p class="apache">Apache HTTP Server Version 2.5</p>
19 <img alt="" src="./images/feather.gif" /></div>
20 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
21 <div id="path">
22 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.5</a></div><div id="page-content"><div id="preamble"><h1>Custom Error Responses</h1>
23 <div class="toplang">
24 <p><span>Available Languages: </span><a href="./en/custom-error.html" title="English">&nbsp;en&nbsp;</a> |
25 <a href="./es/custom-error.html" hreflang="es" rel="alternate" title="Español">&nbsp;es&nbsp;</a> |
26 <a href="./fr/custom-error.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
27 <a href="./ja/custom-error.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
28 <a href="./ko/custom-error.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
29 <a href="./tr/custom-error.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
30 </div>
31
32
33     <p>Although the Apache HTTP Server provides generic error responses
34     in the event of 4xx or 5xx HTTP status codes, these responses are
35     rather stark, uninformative, and can be intimidating to site users.
36     You may wish to provide custom error responses which are either
37     friendlier, or in some language other than English, or perhaps which
38     are styled more in line with your site layout.</p>
39
40     <p>Customized error responses can be defined for any HTTP status
41     code designated as an error condition - that is, any 4xx or 5xx
42     status.</p>
43
44     <p>Additionally, a set of values are provided, so
45     that the error document can be customized further based on the
46     values of these variables, using <a href="howto/ssi.html">Server
47     Side Includes</a>. Or, you can have error conditions handled by a
48     cgi program, or other dynamic handler (PHP, mod_perl, etc) which
49     makes use of these variables.</p>
50
51   </div>
52 <div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#configuration">Configuration</a></li>
53 <li><img alt="" src="./images/down.gif" /> <a href="#variables">Available Variables</a></li>
54 <li><img alt="" src="./images/down.gif" /> <a href="#custom">Customizing Error Responses</a></li>
55 <li><img alt="" src="./images/down.gif" /> <a href="#multi-lang">Multi Language Custom Error Documents</a></li>
56 </ul><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
57 <div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
58 <div class="section">
59 <h2><a name="configuration" id="configuration">Configuration</a></h2>
60
61     <p>Custom error documents are configured using the <code class="directive"><a href="./mod/core.html#errordocument">ErrorDocument</a></code> directive,
62     which may be used in global,
63     virtualhost, or directory context. It may be used in .htaccess files
64     if <code class="directive"><a href="./mod/core.html#allowoverride">AllowOverride</a></code> is set to
65     FileInfo.</p>
66
67     <pre class="prettyprint lang-config">
68 ErrorDocument 500 "Sorry, our script crashed. Oh dear"<br />
69 ErrorDocument 500 /cgi-bin/crash-recover<br />
70 ErrorDocument 500 http://error.example.com/server_error.html<br />
71 ErrorDocument 404 /errors/not_found.html <br />
72 ErrorDocument 401 /subscription/how_to_subscribe.html
73     </pre>
74
75
76     <p>The syntax of the <code>ErrorDocument</code> directive is:</p>
77
78     <pre class="prettyprint lang-config">
79       ErrorDocument &lt;3-digit-code&gt; &lt;action&gt;
80     </pre>
81
82
83     <p>where the action will be treated as:</p>
84
85     <ol>
86       <li>A local URL to redirect to (if the action begins with a "/").</li>
87       <li>An external URL to redirect to (if the action is a valid URL).</li>
88       <li>Text to be displayed (if none of the above). The text must be
89           wrapped in quotes (") if it consists of more than one word.</li>
90     </ol>
91
92     <p>When redirecting to a local URL, additional environment variables
93     are set so that the response can be further customized. They are not sent to
94     external URLs.</p>
95
96   </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
97 <div class="section">
98 <h2><a name="variables" id="variables">Available Variables</a></h2>
99
100       <p>Redirecting to another URL can be useful, but only if some
101       information can be passed which can then be used to explain or log
102       the error condition more clearly.</p>
103
104       <p>To achieve this, when the error redirect is sent, additional
105       environment variables will be set, which will be generated from
106       the headers provided to the original request by prepending
107       'REDIRECT_' onto the original header name. This provides the error
108       document the context of the original request.</p>
109
110       <p>For example, you might receive, in addition to more usual
111       environment variables, the following.</p>
112
113       <div class="example"><p><code>
114         REDIRECT_HTTP_ACCEPT=*/*, image/gif, image/jpeg, image/png<br />
115         REDIRECT_HTTP_USER_AGENT=Mozilla/5.0 Fedora/3.5.8-1.fc12 Firefox/3.5.8<br />
116         REDIRECT_PATH=.:/bin:/usr/local/bin:/sbin<br />
117         REDIRECT_QUERY_STRING=<br />
118         REDIRECT_REMOTE_ADDR=121.345.78.123<br />
119         REDIRECT_REMOTE_HOST=client.example.com<br />
120         REDIRECT_SERVER_NAME=www.example.edu<br />
121         REDIRECT_SERVER_PORT=80<br />
122         REDIRECT_SERVER_SOFTWARE=Apache/2.2.15<br />
123         REDIRECT_URL=/cgi-bin/buggy.pl
124       </code></p></div>
125
126       <p><code>REDIRECT_</code> environment variables are created from
127       the environment variables which existed prior to the
128       redirect. They are renamed with a <code>REDIRECT_</code>
129       prefix, <em>i.e.</em>, <code>HTTP_USER_AGENT</code> becomes
130       <code>REDIRECT_HTTP_USER_AGENT</code>.</p>
131
132       <p><code>REDIRECT_URL</code>, <code>REDIRECT_STATUS</code>, and
133       <code>REDIRECT_QUERY_STRING</code> are guaranteed to be set, and
134       the other headers will be set only if they existed prior to the
135       error condition.</p>
136
137       <p><strong>None</strong> of these will be
138       set if the <code class="directive"><a href="./mod/core.html#errordocument">ErrorDocument</a></code> target is an
139       <em>external</em> redirect (anything starting with a
140       scheme name like <code>http:</code>, even if it refers to the same host
141       as the server).</p>
142   </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
143 <div class="section">
144 <h2><a name="custom" id="custom">Customizing Error Responses</a></h2>
145
146       <p>If you point your <code>ErrorDocument</code> to some variety of
147       dynamic handler such as a server-side include document, CGI
148       script, or some variety of other handler, you may wish to use the
149       available custom environment variables to customize this
150       response.</p>
151
152       <p>If the ErrorDocument specifies a local redirect to a CGI
153       script, the script should include a "<code>Status:</code>"
154       header field in its output in order to ensure the propagation
155       all the way back to the client of the error condition that
156       caused it to be invoked. For instance, a Perl ErrorDocument
157       script might include the following:</p>
158
159        <pre class="prettyprint lang-perl">
160 ...
161 print  "Content-type: text/html\n"; <br />
162 printf "Status: %s Condition Intercepted\n", $ENV{"REDIRECT_STATUS"}; <br />
163 ...
164       </pre>
165
166
167       <p>If the script is dedicated to handling a particular error
168       condition, such as <code>404&nbsp;Not&nbsp;Found</code>, it can
169       use the specific code and error text instead.</p>
170
171       <p>Note that if the response contains <code>Location:</code>
172       header (in order to issue a client-side redirect), the script
173       <em>must</em> emit an appropriate <code>Status:</code> header
174       (such as <code>302&nbsp;Found</code>). Otherwise the
175       <code>Location:</code> header may have no effect.</p>
176
177   </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
178 <div class="section">
179 <h2><a name="multi-lang" id="multi-lang">Multi Language Custom Error Documents</a></h2>
180
181     <p>Provided with your installation of the Apache HTTP Server is a
182     directory of custom error documents translated into 16 different
183     languages. There's also a configuration file in the
184     <code>conf/extra</code> configuration directory that can be included
185     to enable this feature.</p>
186
187     <p>In your server configuration file, you'll see a line such as:</p>
188
189     <pre class="prettyprint lang-config">
190     # Multi-language error messages<br />
191     #Include conf/extra/httpd-multilang-errordoc.conf
192     </pre>
193
194
195     <p>Uncommenting this <code>Include</code> line will enable this
196     feature, and provide language-negotiated error messages, based on
197     the language preference set in the client browser.</p>
198
199     <p>Additionally, these documents contain various of the
200     <code>REDIRECT_</code> variables, so that additional information can
201     be provided to the end-user about what happened, and what they can
202     do now.</p>
203
204     <p>These documents can be customized to whatever degree you wish to
205     provide more useful information to users about your site, and what
206     they can expect to find there.</p>
207
208     <p><code class="module"><a href="./mod/mod_include.html">mod_include</a></code> and <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code>
209     must be enabled to use this feature.</p>
210
211  </div></div>
212 <div class="bottomlang">
213 <p><span>Available Languages: </span><a href="./en/custom-error.html" title="English">&nbsp;en&nbsp;</a> |
214 <a href="./es/custom-error.html" hreflang="es" rel="alternate" title="Español">&nbsp;es&nbsp;</a> |
215 <a href="./fr/custom-error.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
216 <a href="./ja/custom-error.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
217 <a href="./ko/custom-error.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
218 <a href="./tr/custom-error.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
219 </div><div class="top"><a href="#page-header"><img src="./images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comments</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
220 <script type="text/javascript"><!--//--><![CDATA[//><!--
221 var comments_shortname = 'httpd';
222 var comments_identifier = 'http://httpd.apache.org/docs/trunk/custom-error.html';
223 (function(w, d) {
224     if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
225         d.write('<div id="comments_thread"><\/div>');
226         var s = d.createElement('script');
227         s.type = 'text/javascript';
228         s.async = true;
229         s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
230         (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
231     }
232     else {
233         d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
234     }
235 })(window, document);
236 //--><!]]></script></div><div id="footer">
237 <p class="apache">Copyright 2012 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
238 <p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
239 if (typeof(prettyPrint) !== 'undefined') {
240     prettyPrint();
241 }
242 //--><!]]></script>
243 </body></html>