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.3</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="../">バージョン
20 2.3</a> > <a href="./">How-To / チュートリアル</a></div><div id="page-content"><div id="preamble"><h1>Apache チュートリアル: .htaccess ファイル</h1>
22 <p><span>言語: </span><a href="../en/howto/htaccess.html" hreflang="en" rel="alternate" title="English"> en </a> |
23 <a href="../ja/howto/htaccess.html" title="Japanese"> ja </a> |
24 <a href="../ko/howto/htaccess.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
25 <a href="../pt-br/howto/htaccess.html" hreflang="pt-br" rel="alternate" title="Português (Brasil)"> pt-br </a></p>
27 <div class="outofdate">この日本語訳はすでに古くなっている可能性があります。
28 更新された内容を見るには英語版をご覧下さい。</div>
30 <p><code>.htaccess</code> ファイルはディレクトリ毎に設定を変更する方法を
33 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">.htaccess ファイル</a></li>
34 <li><img alt="" src="../images/down.gif" /> <a href="#what">.htaccess ファイルとは何か/その使い方</a></li>
35 <li><img alt="" src="../images/down.gif" /> <a href="#when">いつ .htaccess ファイルを使う(使わない)か。</a></li>
36 <li><img alt="" src="../images/down.gif" /> <a href="#how">ディレクティブの適用のされ方</a></li>
37 <li><img alt="" src="../images/down.gif" /> <a href="#auth">認証の例</a></li>
38 <li><img alt="" src="../images/down.gif" /> <a href="#ssi">SSI の例</a></li>
39 <li><img alt="" src="../images/down.gif" /> <a href="#cgi">CGI の例</a></li>
40 <li><img alt="" src="../images/down.gif" /> <a href="#troubleshoot">問題解決</a></li>
42 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
44 <h2><a name="related" id="related">.htaccess ファイル</a></h2>
45 <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_authn_file.html">mod_authn_file</a></code></li><li><code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</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/mod_authn_core.html#authtype">AuthType</a></code></li><li><code class="directive"><a href="../mod/mod_authn_core.html#authname">AuthName</a></code></li><li><code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code></li><li><code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code></li><li><code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code></li></ul></td></tr></table>
46 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
48 <h2><a name="what" id="what">.htaccess ファイルとは何か/その使い方</a></h2>
51 <p><code>.htaccess</code> ファイル (「分散設定ファイル」) は
52 ディレクトリ毎に設定を変更する方法を提供します。ディレクティブの
53 書かれたファイルをディレクトリに置くことで、そのディレクトリとその
54 サブディレクトリすべてにディレクティブを適用させることができます。</p>
56 <div class="note"><h3>注:</h3>
57 <p><code>.htaccess</code> ファイルを別の名前にしたい場合は、
58 <code class="directive"><a href="../mod/core.html#accessfilename">AccessFileName</a></code> ディレクティブを
59 使って変更することができます。例えば、そのファイルを <code>.config</code>
60 という名前にしたい場合は、以下の設定をサーバ設定ファイルに入れることが
63 <div class="example"><p><code>
64 AccessFileName .config
68 <p>一般に、<code>.htaccess</code> ファイルの構文は
69 <a href="../configuring.html#syntax">主設定ファイル</a>
70 と同じです。これらのファイルに書くことのできるディレクティブは <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> ディレクティブにより決まります。
71 このディレクティブは、<code>.htaccess</code> ファイルに
73 どのディレクティブが適用されるかをカテゴリー単位で指定します。
74 <code>.htaccess</code> に書くことのできるディレクティブであれば、
75 説明文書には「上書き」という項目があり、.htaccess に書くことができるように
76 なるための <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> の値が指定されています。</p>
78 <p>例えば、<code class="directive"><a href="../mod/core.html#adddefaultcharset">AddDefaultCharset</a></code> ディレクティブの説明を
79 見ると、<code>.htaccess</code> ファイルでの使用が許可されていることが
80 わかります。 (ディレクティブの概要の所にある「コンテキスト」と書かれている
81 行を見てください。) <a href="../mod/directive-dict.html#Context">上書き</a>と書かれている行には
82 <code>FileInfo</code> とあります。ですから、<code>.htaccess</code> 中の
83 このディレクティブが有効になるためには、少なくとも
84 <code>AllowOverride FileInfo</code> が設定されている必要があります。</p>
86 <div class="example"><h3>例:</h3><table>
88 <td><a href="../mod/directive-dict.html#Context">コンテキスト:</a></td>
89 <td>サーバ設定ファイル,バーチャルホスト,ディレクトリ,.htaccess</td>
93 <td><a href="../mod/directive-dict.html#Override">上書き:</a></td>
98 <p>あるディレクティブを <code>.htaccess</code> ファイルに書くことができるか
99 どうかわからないときは、そのディレクティブの説明を探して、".htaccess"
100 のための「コンテキスト」の行を調べてください。</p>
101 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
102 <div class="section">
103 <h2><a name="when" id="when">いつ .htaccess ファイルを使う(使わない)か。</a></h2>
105 <p>一般的に、サーバの主設定ファイルにアクセスできない場合を除いて、
106 <code>.htaccess</code> ファイルの使用は極力避けてください。
107 世の中には、例えば、ユーザ認証は常に <code>.htaccess</code> ファイルで
108 行なわなければならない、という誤解が広まっていますが、まったくそんなことは
109 ありません。ユーザ認証の設定はサーバ主設定ファイルに書くことができ、
110 実際、その方がより良い設定方法です。</p>
112 <p><code>.htaccess</code> ファイルはコンテンツ提供者がディレクトリ毎の
113 設定を行ないたいけれど、サーバシステムの root アクセス権限を持っていない
114 という場合にのみ使うべきものです。サーバ管理者が頻繁に設定変更を行ないたくは
115 ない、というときには個々のユーザが <code>.htaccess</code> ファイルを使って
116 自分で設定の変更を行なうことを許可した方が良いときもあるでしょう。
117 これは特に、ISP が複数のユーザのサイトを一つのマシンでホストしていて、
118 各ユーザが設定の変更をできるようにしたいようなときにあてはまります。</p>
120 <p>しかし、普通は可能であれば <code>.htaccess</code> ファイルの使用は
121 避けてください。<code>.htaccess</code> ファイルに書こうと考えるような
122 すべての設定は、サーバの主設定ファイルの <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code> セクションで同じように行なうことが
125 <p><code>.htaccess</code> ファイルの使用を避ける理由は主に二つあります。</p>
127 <p>一つ目はサーバの性能の問題です。<code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> ディレクティブが
128 <code>.htaccess</code> ファイルの設定を許可している場合は、Apache は
129 各ディレクトリで <code>.htaccess</code> ファイルを探します。
130 ですから、<code>.htaccess</code> ファイルを許可すると、実際に使用しているか
131 どうかに関わらず、性能の低下を招くことになります! また、<code>.htaccess</code>
132 ファイルは文書がリクエストされる度に読み込まれます。</p>
134 <p>さらに、Apache は適用すべきディレクティブを集めるために、すべての
135 上位のディレクトリの <code>.htaccess</code> ファイルを探す必要があることにも
136 注意してください。(<a href="#how">ディレクティブが適用される方法</a>を
137 参照してください。)ですから、<code>/www/htdocs/example</code> にある
138 ファイルがリクエストされたときは、Apache は以下のファイルを調べます。</p>
140 <div class="example"><p><code>
143 /www/htdocs/.htaccess<br />
144 /www/htdocs/example/.htaccess
147 <p>ですから、そのディレクトリのそれぞれのファイルへのアクセスに対して、
148 上の例のファイルがまったく存在しないときでも、追加のファイルシステムの
149 アクセスが行なわれることになります。(これは、<code>.htaccess</code> が
150 <code>/</code> に対して有効になっているときの場合で、普通はそうなって
153 <p>二つ目はセキュリティです。ユーザにサーバの設定を変更することを
154 許可することになりますので、あなた自身が管理できない変更をされる
155 恐れがあります。ユーザにこの特権を与えるのが良いのかどうか、十分
156 検討してください。また、ユーザに与える権限が必要なものよりも少なすぎると、
157 余分な技術サポート報告を受け取るようになる可能性が高いことにも
158 注意してください。確実に、ユーザにどの程度の権限を与えたか明確に告げるように
159 してください。<code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> に
160 何を設定したかということと、関連する文書を示すことで、
164 <p>ところで、ディレクティブの書かれた <code>.htaccess</code> を
165 <code>/www/htdocs/example</code> に置くことと、同じディレクティブを
166 主サーバ設定の Directory セクション
167 <code><Directory /www/htdocs/example></code> に書くことは
170 <p><code>/www/htdocs/example</code> の <code>.htaccess</code> ファイル:</p>
172 <div class="example"><h3><code>/www/htdocs/example</code> の .htaccess ファイルの
174 AddType text/example .exm
177 <div class="example"><h3><code>httpd.conf のセクション</code>
179 <Directory /www/htdocs/example><br />
180 <span class="indent">
181 AddType text/example .exm<br />
186 <p>しかし、この設定はサーバ設定ファイルに書いた方がパフォーマンスの
187 低下が少なくなります。ファイルがリクエストされる度に
188 読み込まれる代わりに、Apache の起動時に 1 回だけ読み込めば
191 <p><code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> ディレクティブの
192 値を <code>none</code> に設定することで <code>.htaccess</code> ファイル
193 の使用を完全に無効にすることができます。</p>
195 <div class="example"><p><code>
198 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
199 <div class="section">
200 <h2><a name="how" id="how">ディレクティブの適用のされ方</a></h2>
202 <p><code>.htaccess</code> ファイルの設定ディレクティブは <code>.htaccess</code>
203 ファイルの存在するディレクトリと、そのサブディレクトリすべてに適用されます。
204 しかし、上の階層のディレクトリにも <code>.htaccess</code> ファイルが
205 存在するかもしれないことを覚えておくことは大切です。ディレクティブは現れる
206 順番に適用されます。ですから、あるディレクトリの <code>.htaccess</code> は
207 ディレクトリツリーのより上の階層の <code>.htaccess</code> ファイルの
208 設定を上書きするかもしれません。そして、その <code>.htaccess</code> も
209 より上の階層で書かれたディレクティブを上書きしたり、主サーバ設定ファイル
210 そのものの設定を上書きしたりしているかもしれません。</p>
214 <p>ディレクトリ <code>/www/htdocs/example1</code> に以下の内容の
215 <code>.htaccess</code> ファイルがあります:</p>
217 <div class="example"><p><code>
221 <p>(注: <code>.htaccess</code>
222 ファイルで "<code class="directive"><a href="../mod/core.html#options">Options</a></code>" ディレクティブが有効になるためには、
223 "<code>AllowOverride Options</code>" を有効にする必要があります。)</p>
225 <p>ディレクトリ <code>/www/htdocs/example1/example2</code> には
226 以下のような <code>.htaccess</code> ファイルがあります:</p>
228 <div class="example"><p><code>
232 <p>二つめの <code>.htaccess</code> により、ディレクトリ
233 <code>/www/htdocs/example1/example2</code> では CGI の実行は
234 許可されません。これは、<code>Options Includes</code> のみが
235 効力を持ち、それがすべての以前の設定を上書きするからです。</p>
237 <h3><a name="merge" id="merge">メイン設定ファイルに対する
238 .htaccess のマージ</a></h3>
240 <p>As discussed in the documentation on <a href="../sections.html">Configuration Sections</a>,
241 <code>.htaccess</code> files can override the <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code> sections for
242 the corresponding directory, but will be overriden by other types
243 of configuration sections from the main configuration files. This
244 fact can be used to enforce certain configurations, even in the
245 presence of a liberal <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> setting. For example, to
246 prevent script execution while allowing anything else to be set in
247 <code>.htaccess</code> you can use:</p>
248 <p><a href="../sections.html">セクションの設定</a>
249 に記載されているように、<code>.htaccess</code> ファイルを使って
250 <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code>
251 セクションの設定をディレクトリ毎に上書きできますが、
252 メイン設定ファイル中にある、他の種類の設定セクションによって
255 <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>
256 で自由度の高い設定があったとしても、ある特定の設定が確実に
257 反映されるようにできます。例えば、CGI スクリプトの実行は
258 不許可に、かつ、<code>.htaccess</code> でその他の項目は
259 設定できるように、という場合は次のようにできます :</p>
261 <div class="example"><p><code>
262 <Directory /><br />
263 <span class="indent">
264 Allowoverride All<br />
266 </Directory><br />
268 <Location /><br />
269 <span class="indent">
270 Options +IncludesNoExec -ExecCGI<br />
276 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
277 <div class="section">
278 <h2><a name="auth" id="auth">認証の例</a></h2>
280 <p>もし認証の方法を知るためにこの部分に直接来たのであれば、次のことを
281 知っておくことが重要です。よくある誤解に、パスワード認証を行なうためには
282 <code>.htaccess</code> ファイルを使う必要がある、というものがあります。
283 これは正しくありません。主サーバ設定ファイルの <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code> セクションに
284 認証用のディレクティブを書く方が推奨される方法で、<code>.htaccess</code>
285 ファイルは主サーバ設定ファイルを変更できないときにのみ使用すべきです。
286 いつ <code>.htaccess</code> ファイルを使うべきで、いつ使うべきではないかに
287 ついては <a href="#when">上</a>を参照してください。</p>
289 <p>以上のことをふまえた上で、もし <code>.htaccess</code> の使用が
290 まだ必要だと思う場合は、次のようなものが望みのことをしてくれるかも
293 <p><code>.htaccess</code> ファイルの内容:</p>
295 <div class="example"><p><code>
297 AuthName "Password Required"<br />
298 AuthUserFile /www/passwords/password.file<br />
299 AuthGroupFile /www/passwords/group.file<br />
303 <p>これらのディレクティブが有効になるためには、
304 <code>AllowOverride AuthConfig</code> が有効でなくてはならないことに
307 <p>認証と承認については <a href="auth.html">認証チュートリアル</a>を
309 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
310 <div class="section">
311 <h2><a name="ssi" id="ssi">SSI の例</a></h2>
313 <p>もう一つの <code>.htaccess</code> ファイルのよくある利用法は
314 特定のディレクトリで SSI を有効にすることです。これは、望みのディレクトリの
315 <code>.htaccess</code> ファイルに以下の設定ディレクティブを書くことで
318 <div class="example"><p><code>
319 Options +Includes<br />
320 AddType text/html shtml<br />
321 AddHandler server-parsed shtml
324 <p>これらのディレクティブが有効になるためには、
325 <code>AllowOverride Options</code> と <code>AllowOverride
326 FileInfo</code> が有効になっている必要があることに注意してください。</p>
328 <p>よりまとまった SSI の説明は <a href="ssi.html">SSI チュートリアル</a>を
330 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
331 <div class="section">
332 <h2><a name="cgi" id="cgi">CGI の例</a></h2>
334 <p>最後に、特定のディレクトリで CGI プログラムの実行を許可したいことが
335 あるでしょう。これは以下の設定で行なうことができます:</p>
337 <div class="example"><p><code>
338 Options +ExecCGI<br />
339 AddHandler cgi-script cgi pl
342 <p>もしくは、あるディレクトリのすべてのファイルが CGI プログラムと
343 みなされるようにしたいなら、以下の設定で実現することができます:</p>
345 <div class="example"><p><code>
346 Options +ExecCGI<br />
347 SetHandler cgi-script
350 <p>これらのディレクティブが有効になるためには、
351 <code>AllowOverride Options</code> と <code>AllowOverride
352 FileInfo</code> が有効である必要があることに注意してください。</p>
354 <p>CGI プログラムと設定のよりまとまった説明は <a href="cgi.html">CGI チュートリアル</a>を参照してください。</p>
356 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
357 <div class="section">
358 <h2><a name="troubleshoot" id="troubleshoot">問題解決</a></h2>
360 <p>設定ディレクティブを <code>.htaccess</code> ファイルに書いたけれども、
361 期待した効果が得られないときには、いくつかの原因が考えられます。</p>
363 <p>一番よくあることは、設定ディレクティブが考慮されるようには
364 <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> が設定されていない
365 というものです。該当のファイルのスコープに <code>AllowOverride None</code>
366 が設定されていないことを確認してください。これを調べるための良い方法は、
367 <code>.htaccess</code> ファイルにごみを書いて、リロードすることです。
368 サーバのエラーが生成されないときは、ほぼ確実に <code>AllowOverride
369 None</code> が設定されている状態になっています。</p>
371 <p>そうではなく、文書をアクセスしようとしたときにエラーが発生している
372 ときは、Apache のエラーログを調べてください。<code>.htaccess</code> ファイルで
373 使用されたディレクティブが許可されていない、ということを知らせている
374 可能性が高いです。または、構文の間違いがあることを述べているかもしれません。
375 その場合にはまずそれを修正する必要があります。</p>
378 <div class="bottomlang">
379 <p><span>言語: </span><a href="../en/howto/htaccess.html" hreflang="en" rel="alternate" title="English"> en </a> |
380 <a href="../ja/howto/htaccess.html" title="Japanese"> ja </a> |
381 <a href="../ko/howto/htaccess.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
382 <a href="../pt-br/howto/htaccess.html" hreflang="pt-br" rel="alternate" title="Português (Brasil)"> pt-br </a></p>
383 </div><div id="footer">
384 <p class="apache">Copyright 2008 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>
385 <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>