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.min.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.4</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.4</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">ErrorDocument 500 "Sorry, our script crashed. Oh dear"<br />
68ErrorDocument 500 /cgi-bin/crash-recover<br />
69ErrorDocument 500 http://error.example.com/server_error.html<br />
70ErrorDocument 404 /errors/not_found.html <br />
71ErrorDocument 401 /subscription/how_to_subscribe.html</pre>
72
73
74    <p>The syntax of the <code>ErrorDocument</code> directive is:</p>
75
76    <pre class="prettyprint lang-config">ErrorDocument &lt;3-digit-code&gt; &lt;action&gt;</pre>
77
78
79    <p>where the action will be treated as:</p>
80
81    <ol>
82      <li>A local URL to redirect to (if the action begins with a "/").</li>
83      <li>An external URL to redirect to (if the action is a valid URL).</li>
84      <li>Text to be displayed (if none of the above). The text must be
85          wrapped in quotes (") if it consists of more than one word.</li>
86    </ol>
87
88    <p>When redirecting to a local URL, additional environment variables
89    are set so that the response can be further customized. They are not sent to
90    external URLs.</p>
91
92  </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
93<div class="section">
94<h2><a name="variables" id="variables">Available Variables</a></h2>
95
96      <p>Redirecting to another URL can be useful, but only if some
97      information can be passed which can then be used to explain or log
98      the error condition more clearly.</p>
99
100      <p>To achieve this, when the error redirect is sent, additional
101      environment variables will be set, which will be generated from
102      the headers provided to the original request by prepending
103      'REDIRECT_' onto the original header name. This provides the error
104      document the context of the original request.</p>
105
106      <p>For example, you might receive, in addition to more usual
107      environment variables, the following.</p>
108
109      <div class="example"><p><code>
110        REDIRECT_HTTP_ACCEPT=*/*, image/gif, image/jpeg, image/png<br />
111        REDIRECT_HTTP_USER_AGENT=Mozilla/5.0 Fedora/3.5.8-1.fc12 Firefox/3.5.8<br />
112        REDIRECT_PATH=.:/bin:/usr/local/bin:/sbin<br />
113        REDIRECT_QUERY_STRING=<br />
114        REDIRECT_REMOTE_ADDR=121.345.78.123<br />
115        REDIRECT_REMOTE_HOST=client.example.com<br />
116        REDIRECT_SERVER_NAME=www.example.edu<br />
117        REDIRECT_SERVER_PORT=80<br />
118        REDIRECT_SERVER_SOFTWARE=Apache/2.2.15<br />
119        REDIRECT_URL=/cgi-bin/buggy.pl
120      </code></p></div>
121
122      <p><code>REDIRECT_</code> environment variables are created from
123      the environment variables which existed prior to the
124      redirect. They are renamed with a <code>REDIRECT_</code>
125      prefix, <em>i.e.</em>, <code>HTTP_USER_AGENT</code> becomes
126      <code>REDIRECT_HTTP_USER_AGENT</code>.</p>
127
128      <p><code>REDIRECT_URL</code>, <code>REDIRECT_STATUS</code>, and
129      <code>REDIRECT_QUERY_STRING</code> are guaranteed to be set, and
130      the other headers will be set only if they existed prior to the
131      error condition.</p>
132
133      <p><strong>None</strong> of these will be
134      set if the <code class="directive"><a href="/mod/core.html#errordocument">ErrorDocument</a></code> target is an
135      <em>external</em> redirect (anything starting with a
136      scheme name like <code>http:</code>, even if it refers to the same host
137      as the server).</p>
138  </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
139<div class="section">
140<h2><a name="custom" id="custom">Customizing Error Responses</a></h2>
141
142      <p>If you point your <code>ErrorDocument</code> to some variety of
143      dynamic handler such as a server-side include document, CGI
144      script, or some variety of other handler, you may wish to use the
145      available custom environment variables to customize this
146      response.</p>
147
148      <p>If the ErrorDocument specifies a local redirect to a CGI
149      script, the script should include a "<code>Status:</code>"
150      header field in its output in order to ensure the propagation
151      all the way back to the client of the error condition that
152      caused it to be invoked. For instance, a Perl ErrorDocument
153      script might include the following:</p>
154
155       <pre class="prettyprint lang-perl">...
156print  "Content-type: text/html\n"; <br />
157printf "Status: %s Condition Intercepted\n", $ENV{"REDIRECT_STATUS"}; <br />
158...</pre>
159
160
161      <p>If the script is dedicated to handling a particular error
162      condition, such as <code>404&nbsp;Not&nbsp;Found</code>, it can
163      use the specific code and error text instead.</p>
164
165      <p>Note that if the response contains <code>Location:</code>
166      header (in order to issue a client-side redirect), the script
167      <em>must</em> emit an appropriate <code>Status:</code> header
168      (such as <code>302&nbsp;Found</code>). Otherwise the
169      <code>Location:</code> header may have no effect.</p>
170
171  </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
172<div class="section">
173<h2><a name="multi-lang" id="multi-lang">Multi Language Custom Error Documents</a></h2>
174
175    <p>Provided with your installation of the Apache HTTP Server is a
176    directory of custom error documents translated into 16 different
177    languages. There's also a configuration file in the
178    <code>conf/extra</code> configuration directory that can be included
179    to enable this feature.</p>
180
181    <p>In your server configuration file, you'll see a line such as:</p>
182
183    <pre class="prettyprint lang-config">    # Multi-language error messages<br />
184    #Include conf/extra/httpd-multilang-errordoc.conf</pre>
185
186
187    <p>Uncommenting this <code>Include</code> line will enable this
188    feature, and provide language-negotiated error messages, based on
189    the language preference set in the client browser.</p>
190
191    <p>Additionally, these documents contain various of the
192    <code>REDIRECT_</code> variables, so that additional information can
193    be provided to the end-user about what happened, and what they can
194    do now.</p>
195
196    <p>These documents can be customized to whatever degree you wish to
197    provide more useful information to users about your site, and what
198    they can expect to find there.</p>
199
200    <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>
201    must be enabled to use this feature.</p>
202
203 </div></div>
204<div class="bottomlang">
205<p><span>Available Languages: </span><a href="/en/custom-error.html" title="English">&nbsp;en&nbsp;</a> |
206<a href="/es/custom-error.html" hreflang="es" rel="alternate" title="Espa�ol">&nbsp;es&nbsp;</a> |
207<a href="/fr/custom-error.html" hreflang="fr" rel="alternate" title="Fran�ais">&nbsp;fr&nbsp;</a> |
208<a href="/ja/custom-error.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
209<a href="/ko/custom-error.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
210<a href="/tr/custom-error.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</a></p>
211</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>
212<script type="text/javascript"><!--//--><![CDATA[//><!--
213var comments_shortname = 'httpd';
214var comments_identifier = 'http://httpd.apache.org/docs/2.4/custom-error.html';
215(function(w, d) {
216    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
217        d.write('<div id="comments_thread"><\/div>');
218        var s = d.createElement('script');
219        s.type = 'text/javascript';
220        s.async = true;
221        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
222        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
223    }
224    else { 
225        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
226    }
227})(window, document);
228//--><!]]></script></div><div id="footer">
229<p class="apache">Copyright 2014 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>
230<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[//><!--
231if (typeof(prettyPrint) !== 'undefined') {
232    prettyPrint();
233}
234//--><!]]></script>
235</body></html>