upload http
[bottlenecks.git] / rubbos / app / httpd-2.0.64 / docs / manual / howto / htaccess.html.ja.utf8
1 <?xml version="1.0" encoding="UTF-8"?>
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="ja" xml:lang="ja"><head><!--
4         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5               This file is generated from xml source: DO NOT EDIT
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7       -->
8 <title>Apache チュートリアル: .htaccess ファイル - Apache HTTP サーバ</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" />
12 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
13 <body id="manual-page"><div id="page-header">
14 <p class="menu"><a href="../mod/">モジュール</a> | <a href="../mod/directives.html">ディレクティブ</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p>
15 <p class="apache">Apache HTTP サーバ バージョン 2.0</p>
16 <img alt="" src="../images/feather.gif" /></div>
17 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
18 <div id="path">
19 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP サーバ</a> &gt; <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> &gt; <a href="../">バージョン 2.0</a> &gt; <a href="./">How-To / チュートリアル</a></div><div id="page-content"><div id="preamble"><h1>Apache チュートリアル: .htaccess ファイル</h1>
20 <div class="toplang">
21 <p><span>Available Languages: </span><a href="../en/howto/htaccess.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
22 <a href="../ja/howto/htaccess.html" title="Japanese">&nbsp;ja&nbsp;</a> |
23 <a href="../ko/howto/htaccess.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
24 </div>
25 <div class="outofdate">This translation may be out of date. Check the
26             English version for recent changes.</div>
27
28 <p><code>.htaccess</code> ファイルはディレクトリ毎に設定を変更する方法を
29 提供します。</p>
30 </div>
31 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">.htaccess ファイル</a></li>
32 <li><img alt="" src="../images/down.gif" /> <a href="#what">.htaccess ファイルとは何か/その使い方</a></li>
33 <li><img alt="" src="../images/down.gif" /> <a href="#when">いつ .htaccess ファイルを使う(使わない)か。</a></li>
34 <li><img alt="" src="../images/down.gif" /> <a href="#how">ディレクティブの適用のされ方</a></li>
35 <li><img alt="" src="../images/down.gif" /> <a href="#auth">認証の例</a></li>
36 <li><img alt="" src="../images/down.gif" /> <a href="#ssi">SSI の例</a></li>
37 <li><img alt="" src="../images/down.gif" /> <a href="#cgi">CGI の例</a></li>
38 <li><img alt="" src="../images/down.gif" /> <a href="#troubleshoot">問題解決</a></li>
39 </ul></div>
40 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
41 <div class="section">
42 <h2><a name="related" id="related">.htaccess ファイル</a></h2>
43     <table class="related"><tr><th>関連モジュール</th><th>関連ディレクティブ</th></tr><tr><td><ul><li><code class="module"><a href="../mod/core.html">core</a></code></li><li><code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code></li><li><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="../mod/mod_include.html">mod_include</a></code></li><li><code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/core.html#accessfilename">AccessFileName</a></code></li><li><code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code></li><li><code class="directive"><a href="../mod/core.html#sethandler">SetHandler</a></code></li><li><code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code></li><li><code class="directive"><a href="../mod/core.html#authname">AuthName</a></code></li><li><code class="directive"><a href="../mod/mod_auth.html#authuserfile">AuthUserFile</a></code></li><li><code class="directive"><a href="../mod/mod_auth.html#authgroupfile">AuthGroupFile</a></code></li><li><code class="directive"><a href="../mod/core.html#require">Require</a></code></li></ul></td></tr></table>
44 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
45 <div class="section">
46 <h2><a name="what" id="what">.htaccess ファイルとは何か/その使い方</a></h2>
47
48
49     <p><code>.htaccess</code> ファイル (「分散設定ファイル」) は
50     ディレクトリ毎に設定を変更する方法を提供します。ディレクティブの
51     書かれたファイルをディレクトリに置くことで、そのディレクトリとその
52     サブディレクトリすべてにディレクティブを適用させることができます。</p>
53
54     <div class="note"><h3>注:</h3>
55       <p><code>.htaccess</code> ファイルを別の名前にしたい場合は、
56       <code class="directive"><a href="../mod/core.html#accessfilename">AccessFileName</a></code> ディレクティブを
57       使って変更することができます。例えば、そのファイルを <code>.config</code> 
58       という名前にしたい場合は、以下の設定をサーバ設定ファイルに入れることが
59       できます:</p>
60
61       <div class="example"><p><code>
62         AccessFileName .config
63       </code></p></div>
64     </div>
65
66     <p>一般に、<code>.htaccess</code> ファイルの構文は
67     <a href="../configuring.html#syntax">主設定ファイル</a>
68     と同じです。これらのファイルに書くことのできるディレクティブは <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> ディレクティブにより決まります。
69     このディレクティブは、<code>.htaccess</code> ファイルに
70     書かれたディレクティブの中で、、
71     どのディレクティブが適用されるかをカテゴリー単位で指定します。
72     <code>.htaccess</code> に書くことのできるディレクティブであれば、
73     説明文書には「上書き」という項目があり、.htaccess に書くことができるように
74     なるための <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> の値が指定されています。</p>
75
76     <p>例えば、<code class="directive"><a href="../mod/core.html#adddefaultcharset">AddDefaultCharset</a></code> ディレクティブの説明を
77     見ると、<code>.htaccess</code> ファイルでの使用が許可されていることが
78     わかります。 (ディレクティブの概要の所にある「コンテキスト」と書かれている
79     行を見てください。) <a href="../mod/directive-dict.html#Context">上書き</a>と書かれている行には
80     <code>FileInfo</code> とあります。ですから、<code>.htaccess</code> 中の
81     このディレクティブが有効になるためには、少なくとも
82     <code>AllowOverride FileInfo</code> が設定されている必要があります。</p>
83
84     <div class="example"><h3>例:</h3><table>
85         <tr>
86           <td><a href="../mod/directive-dict.html#Context">コンテキスト:</a></td>
87           <td>サーバ設定ファイル,バーチャルホスト,ディレクトリ,.htaccess</td>
88         </tr>
89
90         <tr>
91           <td><a href="../mod/directive-dict.html#Override">上書き:</a></td>
92           <td>FileInfo</td>
93         </tr>
94       </table></div>
95
96     <p>あるディレクティブを <code>.htaccess</code> ファイルに書くことができるか
97     どうかわからないときは、そのディレクティブの説明を探して、".htaccess"
98     のための「コンテキスト」の行を調べてください。</p>
99     </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
100 <div class="section">
101 <h2><a name="when" id="when">いつ .htaccess ファイルを使う(使わない)か。</a></h2>
102
103     <p>一般的に、サーバの主設定ファイルにアクセスできない場合を除いて、
104     <code>.htaccess</code> ファイルの使用は極力避けてください。
105     世の中には、例えば、ユーザ認証は常に <code>.htaccess</code> ファイルで
106     行なわなければならない、という誤解が広まっていますが、まったくそんなことは
107     ありません。ユーザ認証の設定はサーバ主設定ファイルに書くことができ、
108     実際、その方がより良い設定方法です。</p>
109
110     <p><code>.htaccess</code> ファイルはコンテンツ提供者がディレクトリ毎の
111     設定を行ないたいけれど、サーバシステムの root アクセス権限を持っていない
112     という場合にのみ使うべきものです。サーバ管理者が頻繁に設定変更を行ないたくは
113     ない、というときには個々のユーザが <code>.htaccess</code> ファイルを使って
114     自分で設定の変更を行なうことを許可した方が良いときもあるでしょう。
115     これは特に、ISP が複数のユーザのサイトを一つのマシンでホストしていて、
116     各ユーザが設定の変更をできるようにしたいようなときにあてはまります。</p>
117
118     <p>しかし、普通は可能であれば <code>.htaccess</code> ファイルの使用は
119     避けてください。<code>.htaccess</code> ファイルに書こうと考えるような
120     すべての設定は、サーバの主設定ファイルの <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> セクションで同じように行なうことが
121     できます。</p>
122
123     <p><code>.htaccess</code> ファイルの使用を避ける理由は主に二つあります。</p>
124
125     <p>一つ目はサーバの性能の問題です。<code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> ディレクティブが
126     <code>.htaccess</code> ファイルの設定を許可している場合は、Apache は
127     各ディレクトリで <code>.htaccess</code> ファイルを探します。
128     ですから、<code>.htaccess</code> ファイルを許可すると、実際に使用しているか
129     どうかに関わらず、性能の低下を招くことになります! また、<code>.htaccess</code>
130     ファイルは文書がリクエストされる度に読み込まれます。</p>
131
132     <p>さらに、Apache は適用すべきディレクティブを集めるために、すべての
133     上位のディレクトリの <code>.htaccess</code> ファイルを探す必要があることにも
134     注意してください。(<a href="#how">ディレクティブが適用される方法</a>を
135     参照してください。)ですから、<code>/www/htdocs/example</code> にある
136     ファイルがリクエストされたときは、Apache は以下のファイルを調べます。</p>
137
138     <div class="example"><p><code>
139       /.htaccess<br />
140       /www/.htaccess<br />
141       /www/htdocs/.htaccess<br />
142       /www/htdocs/example/.htaccess
143     </code></p></div>
144
145     <p>ですから、そのディレクトリのそれぞれのファイルへのアクセスに対して、
146     上の例のファイルがまったく存在しないときでも、追加のファイルシステムの
147     アクセスが行なわれることになります。(これは、<code>.htaccess</code> が
148     <code>/</code> に対して有効になっているときの場合で、普通はそうなって
149     いないことに注意してください。)</p>
150
151     <p>二つ目はセキュリティです。ユーザにサーバの設定を変更することを
152     許可することになりますので、あなた自身が管理できない変更をされる
153     恐れがあります。ユーザにこの特権を与えるのが良いのかどうか、十分
154     検討してください。また、ユーザに与える権限が必要なものよりも少なすぎると、
155     余分な技術サポート報告を受け取るようになる可能性が高いことにも
156     注意してください。確実に、ユーザにどの程度の権限を与えたか明確に告げるように
157     してください。<code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> に
158     何を設定したかということと、関連する文書を示すことで、
159     後々の混乱をぐっと減らすことが
160     できます。</p>
161
162     <p>ところで、ディレクティブの書かれた <code>.htaccess</code> を
163     <code>/www/htdocs/example</code> に置くことと、同じディレクティブを
164     主サーバ設定の Directory セクション
165     <code>&lt;Directory /www/htdocs/example&gt;</code> に書くことは
166     完全に等価です:</p>
167
168     <p><code>/www/htdocs/example</code> の <code>.htaccess</code> ファイル:</p>
169
170     <div class="example"><h3><code>/www/htdocs/example</code> の .htaccess ファイルの
171     内容</h3><p><code>
172         AddType text/example .exm
173     </code></p></div>
174
175     <div class="example"><h3><code>httpd.conf のセクション</code>
176     file</h3><p><code>
177       &lt;Directory /www/htdocs/example&gt;<br />
178       <span class="indent">
179         AddType text/example .exm<br />
180       </span>
181       &lt;/Directory&gt;
182     </code></p></div>
183
184     <p>しかし、この設定はサーバ設定ファイルに書いた方がパフォーマンスの
185     低下が少なくなります。ファイルがリクエストされる度に
186     読み込まれる代わりに、Apache の起動時に 1 回だけ読み込めば
187     よくなるからです。</p>
188
189     <p><code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> ディレクティブの
190     値を <code>none</code> に設定することで <code>.htaccess</code> ファイル
191     の使用を完全に無効にすることができます。</p>
192
193     <div class="example"><p><code>
194       AllowOverride None
195     </code></p></div>
196 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
197 <div class="section">
198 <h2><a name="how" id="how">ディレクティブの適用のされ方</a></h2>
199
200     <p><code>.htaccess</code> ファイルの設定ディレクティブは <code>.htaccess</code>
201     ファイルの存在するディレクトリと、そのサブディレクトリすべてに適用されます。
202     しかし、上の階層のディレクトリにも <code>.htaccess</code> ファイルが
203     存在するかもしれないことを覚えておくことは大切です。ディレクティブは現れる
204     順番に適用されます。ですから、あるディレクトリの <code>.htaccess</code> は
205     ディレクトリツリーのより上の階層の <code>.htaccess</code> ファイルの
206     設定を上書きするかもしれません。そして、その <code>.htaccess</code> も
207     より上の階層で書かれたディレクティブを上書きしたり、主サーバ設定ファイル
208     そのものの設定を上書きしたりしているかもしれません。</p>
209
210     <p>例:</p>
211
212     <p>ディレクトリ <code>/www/htdocs/example1</code> に以下の内容の
213     <code>.htaccess</code> ファイルがあります:</p>
214
215     <div class="example"><p><code>
216        Options +ExecCGI
217     </code></p></div>
218
219     <p>(注: <code>.htaccess</code>
220     ファイルで "<code class="directive"><a href="../mod/core.html#options">Options</a></code>" ディレクティブが有効になるためには、
221     "<code>AllowOverride Options</code>" を有効にする必要があります。)</p>
222
223     <p>ディレクトリ <code>/www/htdocs/example1/example2</code> には
224     以下のような <code>.htaccess</code> ファイルがあります:</p>
225
226     <div class="example"><p><code>
227        Options Includes
228     </code></p></div>
229
230     <p>二つめの <code>.htaccess</code> により、ディレクトリ
231     <code>/www/htdocs/example1/example2</code> では CGI の実行は
232     許可されません。これは、<code>Options Includes</code> のみが
233     効力を持ち、それがすべての以前の設定を上書きするからです。</p>
234 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
235 <div class="section">
236 <h2><a name="auth" id="auth">認証の例</a></h2>
237
238     <p>もし認証の方法を知るためにこの部分に直接来たのであれば、次のことを
239     知っておくことが重要です。よくある誤解に、パスワード認証を行なうためには
240     <code>.htaccess</code> ファイルを使う必要がある、というものがあります。
241     これは正しくありません。主サーバ設定ファイルの <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> セクションに
242     認証用のディレクティブを書く方が推奨される方法で、<code>.htaccess</code>
243     ファイルは主サーバ設定ファイルを変更できないときにのみ使用すべきです。
244     いつ <code>.htaccess</code> ファイルを使うべきで、いつ使うべきではないかに
245     ついては <a href="#when">上</a>を参照してください。</p>
246
247     <p>以上のことをふまえた上で、もし <code>.htaccess</code> の使用が
248     まだ必要だと思う場合は、次のようなものが望みのことをしてくれるかも
249     しれません。</p>
250
251     <p>ディレクティブが適用されるためには、
252     "<code>AllowOverride AuthConfig</code>" の設定がなされている
253     必要があります。</p>
254
255     <p><code>.htaccess</code> ファイルの内容:</p>
256
257     <div class="example"><p><code>
258       AuthType Basic<br />
259       AuthName "Password Required"<br />
260       AuthUserFile /www/passwords/password.file<br />
261       AuthGroupFile /www/passwords/group.file<br />
262       Require Group admins
263     </code></p></div>
264
265     <p>これらのディレクティブが有効になるためには、
266     <code>AllowOverride AuthConfig</code> が有効でなくてはならないことに
267     注意してください。</p>
268
269     <p>認証と承認については <a href="auth.html">認証チュートリアル</a>を
270     参照してください。</p>
271 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
272 <div class="section">
273 <h2><a name="ssi" id="ssi">SSI の例</a></h2>
274
275     <p>もう一つの <code>.htaccess</code> ファイルのよくある利用法は
276     特定のディレクトリで SSI を有効にすることです。これは、望みのディレクトリの
277     <code>.htaccess</code> ファイルに以下の設定ディレクティブを書くことで
278     達成できます:</p>
279
280     <div class="example"><p><code>
281        Options +Includes<br />
282        AddType text/html shtml<br />
283        AddHandler server-parsed shtml
284     </code></p></div>
285
286     <p>これらのディレクティブが有効になるためには、
287     <code>AllowOverride Options</code> と <code>AllowOverride
288     FileInfo</code> が有効になっている必要があることに注意してください。</p>
289
290     <p>よりまとまった SSI の説明は <a href="ssi.html">SSI チュートリアル</a>を
291     参照してください。</p>
292 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
293 <div class="section">
294 <h2><a name="cgi" id="cgi">CGI の例</a></h2>
295
296     <p>最後に、特定のディレクトリで CGI プログラムの実行を許可したいことが
297     あるでしょう。これは以下の設定で行なうことができます:</p>
298
299     <div class="example"><p><code>
300        Options +ExecCGI<br />
301        AddHandler cgi-script cgi pl
302     </code></p></div>
303
304     <p>もしくは、あるディレクトリのすべてのファイルが CGI プログラムと
305     みなされるようにしたいなら、以下の設定で実現することができます:</p>
306
307     <div class="example"><p><code>
308        Options +ExecCGI<br />
309        SetHandler cgi-script
310     </code></p></div>
311
312     <p>これらのディレクティブが有効になるためには、
313     <code>AllowOverride Options</code> と <code>AllowOverride
314     FileInfo</code> が有効である必要があることに注意してください。</p>
315
316     <p>CGI プログラムと設定のよりまとまった説明は <a href="cgi.html">CGI チュートリアル</a>を参照してください。</p>
317
318 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
319 <div class="section">
320 <h2><a name="troubleshoot" id="troubleshoot">問題解決</a></h2>
321
322     <p>設定ディレクティブを <code>.htaccess</code> ファイルに書いたけれども、
323     期待した効果が得られないときには、いくつかの原因が考えられます。</p>
324
325     <p>一番よくあることは、設定ディレクティブが考慮されるようには
326     <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> が設定されていない
327     というものです。該当のファイルのスコープに <code>AllowOverride None</code>
328     が設定されていないことを確認してください。これを調べるための良い方法は、
329     <code>.htaccess</code> ファイルにごみを書いて、リロードすることです。
330     サーバのエラーが生成されないときは、ほぼ確実に <code>AllowOverride
331     None</code> が設定されている状態になっています。</p>
332
333     <p>そうではなく、文書をアクセスしようとしたときにエラーが発生している
334     ときは、Apache のエラーログを調べてください。<code>.htaccess</code> ファイルで
335     使用されたディレクティブが許可されていない、ということを知らせている
336     可能性が高いです。または、構文の間違いがあることを述べているかもしれません。
337     その場合にはまずそれを修正する必要があります。</p>
338
339 </div></div>
340 <div class="bottomlang">
341 <p><span>Available Languages: </span><a href="../en/howto/htaccess.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
342 <a href="../ja/howto/htaccess.html" title="Japanese">&nbsp;ja&nbsp;</a> |
343 <a href="../ko/howto/htaccess.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
344 </div><div id="footer">
345 <p class="apache">Copyright 2009 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>
346 <p class="menu"><a href="../mod/">モジュール</a> | <a href="../mod/directives.html">ディレクティブ</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p></div>
347 </body></html>