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
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="<-" alt="<-" src="../images/left.gif" /></a></div>
19 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP サーバ</a> > <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> > <a href="../">バージョン 2.0</a> > <a href="./">How-To / チュートリアル</a></div><div id="page-content"><div id="preamble"><h1>Apache チュートリアル: .htaccess ファイル</h1>
21 <p><span>Available Languages: </span><a href="../en/howto/htaccess.html" hreflang="en" rel="alternate" title="English"> en </a> |
22 <a href="../ja/howto/htaccess.html" title="Japanese"> ja </a> |
23 <a href="../ko/howto/htaccess.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
25 <div class="outofdate">This translation may be out of date. Check the
26 English version for recent changes.</div>
28 <p><code>.htaccess</code> ファイルはディレクトリ毎に設定を変更する方法を
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>
40 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
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>
46 <h2><a name="what" id="what">.htaccess ファイルとは何か/その使い方</a></h2>
49 <p><code>.htaccess</code> ファイル (「分散設定ファイル」) は
50 ディレクトリ毎に設定を変更する方法を提供します。ディレクティブの
51 書かれたファイルをディレクトリに置くことで、そのディレクトリとその
52 サブディレクトリすべてにディレクティブを適用させることができます。</p>
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 という名前にしたい場合は、以下の設定をサーバ設定ファイルに入れることが
61 <div class="example"><p><code>
62 AccessFileName .config
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> ファイルに
71 どのディレクティブが適用されるかをカテゴリー単位で指定します。
72 <code>.htaccess</code> に書くことのできるディレクティブであれば、
73 説明文書には「上書き」という項目があり、.htaccess に書くことができるように
74 なるための <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> の値が指定されています。</p>
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>
84 <div class="example"><h3>例:</h3><table>
86 <td><a href="../mod/directive-dict.html#Context">コンテキスト:</a></td>
87 <td>サーバ設定ファイル,バーチャルホスト,ディレクトリ,.htaccess</td>
91 <td><a href="../mod/directive-dict.html#Override">上書き:</a></td>
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>
103 <p>一般的に、サーバの主設定ファイルにアクセスできない場合を除いて、
104 <code>.htaccess</code> ファイルの使用は極力避けてください。
105 世の中には、例えば、ユーザ認証は常に <code>.htaccess</code> ファイルで
106 行なわなければならない、という誤解が広まっていますが、まったくそんなことは
107 ありません。ユーザ認証の設定はサーバ主設定ファイルに書くことができ、
108 実際、その方がより良い設定方法です。</p>
110 <p><code>.htaccess</code> ファイルはコンテンツ提供者がディレクトリ毎の
111 設定を行ないたいけれど、サーバシステムの root アクセス権限を持っていない
112 という場合にのみ使うべきものです。サーバ管理者が頻繁に設定変更を行ないたくは
113 ない、というときには個々のユーザが <code>.htaccess</code> ファイルを使って
114 自分で設定の変更を行なうことを許可した方が良いときもあるでしょう。
115 これは特に、ISP が複数のユーザのサイトを一つのマシンでホストしていて、
116 各ユーザが設定の変更をできるようにしたいようなときにあてはまります。</p>
118 <p>しかし、普通は可能であれば <code>.htaccess</code> ファイルの使用は
119 避けてください。<code>.htaccess</code> ファイルに書こうと考えるような
120 すべての設定は、サーバの主設定ファイルの <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code> セクションで同じように行なうことが
123 <p><code>.htaccess</code> ファイルの使用を避ける理由は主に二つあります。</p>
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>
132 <p>さらに、Apache は適用すべきディレクティブを集めるために、すべての
133 上位のディレクトリの <code>.htaccess</code> ファイルを探す必要があることにも
134 注意してください。(<a href="#how">ディレクティブが適用される方法</a>を
135 参照してください。)ですから、<code>/www/htdocs/example</code> にある
136 ファイルがリクエストされたときは、Apache は以下のファイルを調べます。</p>
138 <div class="example"><p><code>
141 /www/htdocs/.htaccess<br />
142 /www/htdocs/example/.htaccess
145 <p>ですから、そのディレクトリのそれぞれのファイルへのアクセスに対して、
146 上の例のファイルがまったく存在しないときでも、追加のファイルシステムの
147 アクセスが行なわれることになります。(これは、<code>.htaccess</code> が
148 <code>/</code> に対して有効になっているときの場合で、普通はそうなって
151 <p>二つ目はセキュリティです。ユーザにサーバの設定を変更することを
152 許可することになりますので、あなた自身が管理できない変更をされる
153 恐れがあります。ユーザにこの特権を与えるのが良いのかどうか、十分
154 検討してください。また、ユーザに与える権限が必要なものよりも少なすぎると、
155 余分な技術サポート報告を受け取るようになる可能性が高いことにも
156 注意してください。確実に、ユーザにどの程度の権限を与えたか明確に告げるように
157 してください。<code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> に
158 何を設定したかということと、関連する文書を示すことで、
162 <p>ところで、ディレクティブの書かれた <code>.htaccess</code> を
163 <code>/www/htdocs/example</code> に置くことと、同じディレクティブを
164 主サーバ設定の Directory セクション
165 <code><Directory /www/htdocs/example></code> に書くことは
168 <p><code>/www/htdocs/example</code> の <code>.htaccess</code> ファイル:</p>
170 <div class="example"><h3><code>/www/htdocs/example</code> の .htaccess ファイルの
172 AddType text/example .exm
175 <div class="example"><h3><code>httpd.conf のセクション</code>
177 <Directory /www/htdocs/example><br />
178 <span class="indent">
179 AddType text/example .exm<br />
184 <p>しかし、この設定はサーバ設定ファイルに書いた方がパフォーマンスの
185 低下が少なくなります。ファイルがリクエストされる度に
186 読み込まれる代わりに、Apache の起動時に 1 回だけ読み込めば
189 <p><code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> ディレクティブの
190 値を <code>none</code> に設定することで <code>.htaccess</code> ファイル
191 の使用を完全に無効にすることができます。</p>
193 <div class="example"><p><code>
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>
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>
212 <p>ディレクトリ <code>/www/htdocs/example1</code> に以下の内容の
213 <code>.htaccess</code> ファイルがあります:</p>
215 <div class="example"><p><code>
219 <p>(注: <code>.htaccess</code>
220 ファイルで "<code class="directive"><a href="../mod/core.html#options">Options</a></code>" ディレクティブが有効になるためには、
221 "<code>AllowOverride Options</code>" を有効にする必要があります。)</p>
223 <p>ディレクトリ <code>/www/htdocs/example1/example2</code> には
224 以下のような <code>.htaccess</code> ファイルがあります:</p>
226 <div class="example"><p><code>
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>
238 <p>もし認証の方法を知るためにこの部分に直接来たのであれば、次のことを
239 知っておくことが重要です。よくある誤解に、パスワード認証を行なうためには
240 <code>.htaccess</code> ファイルを使う必要がある、というものがあります。
241 これは正しくありません。主サーバ設定ファイルの <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code> セクションに
242 認証用のディレクティブを書く方が推奨される方法で、<code>.htaccess</code>
243 ファイルは主サーバ設定ファイルを変更できないときにのみ使用すべきです。
244 いつ <code>.htaccess</code> ファイルを使うべきで、いつ使うべきではないかに
245 ついては <a href="#when">上</a>を参照してください。</p>
247 <p>以上のことをふまえた上で、もし <code>.htaccess</code> の使用が
248 まだ必要だと思う場合は、次のようなものが望みのことをしてくれるかも
251 <p>ディレクティブが適用されるためには、
252 "<code>AllowOverride AuthConfig</code>" の設定がなされている
255 <p><code>.htaccess</code> ファイルの内容:</p>
257 <div class="example"><p><code>
259 AuthName "Password Required"<br />
260 AuthUserFile /www/passwords/password.file<br />
261 AuthGroupFile /www/passwords/group.file<br />
265 <p>これらのディレクティブが有効になるためには、
266 <code>AllowOverride AuthConfig</code> が有効でなくてはならないことに
269 <p>認証と承認については <a href="auth.html">認証チュートリアル</a>を
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>
275 <p>もう一つの <code>.htaccess</code> ファイルのよくある利用法は
276 特定のディレクトリで SSI を有効にすることです。これは、望みのディレクトリの
277 <code>.htaccess</code> ファイルに以下の設定ディレクティブを書くことで
280 <div class="example"><p><code>
281 Options +Includes<br />
282 AddType text/html shtml<br />
283 AddHandler server-parsed shtml
286 <p>これらのディレクティブが有効になるためには、
287 <code>AllowOverride Options</code> と <code>AllowOverride
288 FileInfo</code> が有効になっている必要があることに注意してください。</p>
290 <p>よりまとまった SSI の説明は <a href="ssi.html">SSI チュートリアル</a>を
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>
296 <p>最後に、特定のディレクトリで CGI プログラムの実行を許可したいことが
297 あるでしょう。これは以下の設定で行なうことができます:</p>
299 <div class="example"><p><code>
300 Options +ExecCGI<br />
301 AddHandler cgi-script cgi pl
304 <p>もしくは、あるディレクトリのすべてのファイルが CGI プログラムと
305 みなされるようにしたいなら、以下の設定で実現することができます:</p>
307 <div class="example"><p><code>
308 Options +ExecCGI<br />
309 SetHandler cgi-script
312 <p>これらのディレクティブが有効になるためには、
313 <code>AllowOverride Options</code> と <code>AllowOverride
314 FileInfo</code> が有効である必要があることに注意してください。</p>
316 <p>CGI プログラムと設定のよりまとまった説明は <a href="cgi.html">CGI チュートリアル</a>を参照してください。</p>
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>
322 <p>設定ディレクティブを <code>.htaccess</code> ファイルに書いたけれども、
323 期待した効果が得られないときには、いくつかの原因が考えられます。</p>
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>
333 <p>そうではなく、文書をアクセスしようとしたときにエラーが発生している
334 ときは、Apache のエラーログを調べてください。<code>.htaccess</code> ファイルで
335 使用されたディレクティブが許可されていない、ということを知らせている
336 可能性が高いです。または、構文の間違いがあることを述べているかもしれません。
337 その場合にはまずそれを修正する必要があります。</p>
340 <div class="bottomlang">
341 <p><span>Available Languages: </span><a href="../en/howto/htaccess.html" hreflang="en" rel="alternate" title="English"> en </a> |
342 <a href="../ja/howto/htaccess.html" title="Japanese"> ja </a> |
343 <a href="../ko/howto/htaccess.html" hreflang="ko" rel="alternate" title="Korean"> ko </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>