1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?>
4 <!-- English Revision: 558686 -->
7 Licensed to the Apache Software Foundation (ASF) under one or more
8 contributor license agreements. See the NOTICE file distributed with
9 this work for additional information regarding copyright ownership.
10 The ASF licenses this file to You under the Apache License, Version 2.0
11 (the "License"); you may not use this file except in compliance with
12 the License. You may obtain a copy of the License at
14 http://www.apache.org/licenses/LICENSE-2.0
16 Unless required by applicable law or agreed to in writing, software
17 distributed under the License is distributed on an "AS IS" BASIS,
18 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 See the License for the specific language governing permissions and
20 limitations under the License.
23 <manualpage metafile="custom-error.xml.meta">
25 <title>カスタムエラーレスポンス</title>
28 <p>ウェブマスターが何らかのエラーや問題に対する
29 Apache の反応を設定できるようにする追加機能を提供します。</p>
31 <p>サーバがエラーや問題を発見した場合の反応を、
32 カスタマイズして定義することができます。</p>
34 <p>スクリプトの実行が失敗して "500 Server Error"
35 を発生させたとします。この場合の反応を、より好ましいテキストや、別の
36 URL (内部及び外部) へのリダイレクションに置き換えることができます。
40 <section id="behavior">
46 <p>NCSA httpd 1.3 は、古くて退屈なエラー/問題メッセージを
47 返していました。それはしばしばユーザには無意味であり、
48 またそれを発生させた原因を記録する方法も提供していませんでした。</p>
55 <li>NCSA のハードコードされたメッセージの代わりに
58 <li>ローカルの URL にリダイレクト</li>
60 <li>外部の URL にリダイレクト</li>
63 <p>するようにサーバを設定できます。</p>
65 <p>別の URL にリダイレクトすることは役に立ちますが、
66 それは説明をしたり、より明確に誤り/問題を記録したりするために
67 何か情報を伝えられるときに限ります。</p>
69 <p>これを実現するために、 Apache は新しく CGI のような環境変数を
73 REDIRECT_HTTP_ACCEPT=*/*, image/gif,
74 image/x-xbitmap, image/jpeg<br />
75 REDIRECT_HTTP_USER_AGENT=Mozilla/1.1b2 (X11; I; HP-UX
76 A.09.05 9000/712)<br />
77 REDIRECT_PATH=.:/bin:/usr/local/bin:/etc<br />
78 REDIRECT_QUERY_STRING=<br />
79 REDIRECT_REMOTE_ADDR=121.345.78.123<br />
80 REDIRECT_REMOTE_HOST=ooh.ahhh.com<br />
81 REDIRECT_SERVER_NAME=crash.bang.edu<br />
82 REDIRECT_SERVER_PORT=80<br />
83 REDIRECT_SERVER_SOFTWARE=Apache/0.8.15<br />
84 REDIRECT_URL=/cgi-bin/buggy.pl
87 <p>頭に付く <code>REDIRECT_</code> に注目してください。</p>
89 <p>少なくとも <code>REDIRECT_URL</code> と
90 <code>REDIRECT_QUERY_STRING</code> は新しい URL (CGI スクリプトか
91 CGI インクルードであると仮定されます) に渡されます。
92 他の変数は、エラーや問題が起きる前に存在した場合にだけ存在します。
94 module="core">ErrorDocument</directive> が <em>外部</em>リダイレクト
95 (<em>すなわち</em>、<code>http:</code>
96 のような体系名から始まるすべてのもの。たとえ同じホストを指していても)
97 ならば、これらは<strong>まったく</strong>設定されません。</p>
101 <section id="configuration">
104 <p><directive module="core">AllowOverride</directive> が適切に設定されていれば、
105 .htaccess ファイルで <directive module="core">ErrorDocument</directive>
108 <p>ここに、いくつかの例を挙げます。</p>
111 ErrorDocument 500 /cgi-bin/crash-recover <br />
112 ErrorDocument 500 "Sorry, our script crashed. Oh dear" <br />
113 ErrorDocument 500 http://xxx/ <br />
114 ErrorDocument 404 /Lame_excuses/not_found.html <br />
115 ErrorDocument 401 /Subscription/how_to_subscribe.html
121 ErrorDocument <3-digit-code> <action>
124 <p>action (動作) は、下記のいずれかです</p>
127 <li>表示するテキスト。テキストは引用符 (") で囲んで指定します。</li>
129 <li>リダイレクト先の外部 URL </li>
131 <li>リダイレクト先のローカル URL </li>
135 <section id="custom">
136 <title>カスタムエラーレスポンスとリダイレクト</title>
138 <p>スクリプト/SSI に追加の環境変数が利用可能になるように、
139 リダイレクトされた URL に対する Apache の動作が変更されました。</p>
144 <p>リダイレクトされたスクリプトは標準の CGI
145 環境変数を利用可能でした。しかし、どこからリダイレクト
146 されたかの情報は提供されていませんでした。</p>
152 <p>リダイレクトされた先のスクリプトが使用可能なように、
153 新しいたくさんの環境変数が初期化されます。新しい変数は、それぞれ
154 <code>REDIRECT_</code> で始まります。
155 <code>REDIRECT_</code> で始まる環境変数はリダイレクトされる前に存在していた
156 CGI 環境変数の頭に <code>REDIRECT_</code> を付けて作成されます。
157 <em>すなわち</em>、<code>HTTP_USER_AGENT</code> は
158 <code>REDIRECT_HTTP_USER_AGENT</code> になります。
159 これらの新しい変数に加えて、Apache は、
160 スクリプトがリダイレクト元のトレースを助けるために
161 <code>REDIRECT_URL</code> と <code>REDIRECT_STATUS</code>
162 を定義します。アクセスログには元の URL とリダイレクトされた URL
165 <p>ErrorDocument が CGI スクリプトへのローカルリダイレクトを
166 指定している場合は、それを起動することになったエラーの状態を
167 クライアントまで確実に伝えるために <code>"Status:" </code>
168 ヘッダを含むべきです。例えば、ErrorDocument 用の Perl
169 スクリプトは以下のようなものを含むかもしれません。
174 print "Content-type: text/html\n"; <br />
175 printf "Status: %s Condition Intercepted\n", $ENV{"REDIRECT_STATUS"}; <br />
179 <p>スクリプトが <code>404 Not Found</code> のような
180 特定のエラーコンディションを扱うためだけに使われる場合は、
181 代わりに特定のコードとエラーテキストを使用することができます。</p>