sections.html.ja.utf8 revision c7ed811e89712261aaa4432198e331389044e1f8
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
<title>セクションの設定 - Apache HTTP サーバ</title>
<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<body id="manual-page"><div id="page-header">
<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>
<p class="apache">Apache HTTP サーバ バージョン 2.3</p>
<div id="path">
<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.3</a></div><div id="page-content"><div id="preamble"><h1>セクションの設定</h1>
<div class="toplang">
<p><span>言語: </span><a href="/en/sections.html" hreflang="en" rel="alternate" title="English"> en </a> |
</div>
サーバ全体に適用されたり、特定のディレクトリやファイル、ホスト、URL にのみ
適用されるように制限したりすることができます。この文書は設定用のセクションの
コンテナや <code>.htaccess</code> ファイルを使って他の設定ディレクティブの
スコープを変更する方法を説明します。</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#types">設定用セクションコンテナの種類</a></li>
</ul></div>
<div class="section">
<h2><a name="types" id="types">設定用セクションコンテナの種類</a></h2>
<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_version.html">mod_version</a></code></li><li><code class="module"><a href="/mod/mod_proxy.html">mod_proxy</a></code></li></ul></td><td><ul><li><code class="directive"><a href="/mod/core.html#directory"><Directory></a></code></li><li><code class="directive"><a href="/mod/core.html#directorymatch"><DirectoryMatch></a></code></li><li><code class="directive"><a href="/mod/core.html#files"><Files></a></code></li><li><code class="directive"><a href="/mod/core.html#filesmatch"><FilesMatch></a></code></li><li><code class="directive"><a href="/mod/core.html#ifdefine"><IfDefine></a></code></li><li><code class="directive"><a href="/mod/core.html#ifmodule"><IfModule></a></code></li><li><code class="directive"><a href="/mod/mod_version.html#ifversion"><IfVersion></a></code></li><li><code class="directive"><a href="/mod/core.html#location"><Location></a></code></li><li><code class="directive"><a href="/mod/core.html#locationmatch"><LocationMatch></a></code></li><li><code class="directive"><a href="/mod/mod_proxy.html#proxy"><Proxy></a></code></li><li><code class="directive"><a href="/mod/mod_proxy.html#proxymatch"><ProxyMatch></a></code></li><li><code class="directive"><a href="/mod/core.html#virtualhost"><VirtualHost></a></code></li></ul></td></tr></table>
<p>コンテナには二つの基本となる種類があります。ほとんどのコンテナは
各リクエストに対して評価されます。その場合、コンテナ中のディレクティブは
コンテナにマッチするリクエストにのみ適用されます。一方、
コンテナは
サーバの起動時と再起動時にのみ評価されます。起動時に条件が真であれば、
コンテナ中のディレクティブはすべてのリクエストに適用されます。条件が
偽であれば、コンテナ中のディレクティブは無視されます。</p>
適用されるディレクティブを囲います。例えば次の設定では、サーバが
<code>httpd -DClosedForNow</code> を使って起動されたときだけすべての
リクエストを別のサイトにリダイレクトします:</p>
<div class="example"><p><code>
<IfDefine ClosedForNow><br />
Redirect / http://otherserver.example.com/<br />
</IfDefine>
</code></p></div>
非常に似ていますが、代わりにサーバ上でモジュールが使用可能な場合にのみ
適用可能なディレクティブを囲います。モジュールはサーバに
静的に組み込まれているか、動的に組み込むようになっていて、設定ファイル中で
部分に書かれている必要があります。このディレクティブは特定のモジュールの
存在に関わらず設定ファイルが動作する必要がある場合にのみ使ってください。
常に動作して欲しいディレクティブを囲むために使うべきではありません。
存在しないモジュールに関する有用なエラーメッセージの発生を抑制してしまいますので。
</p>
<p>次の例では、<code class="module"><a href="/mod/mod_mime_magic.html">mod_mime_magic</a></code> があるときにのみ <code class="directive"><a href="/mod/mod_mime_magic.html#mimemagicfiles">MimeMagicFiles</a></code> ディレクティブが
適用されます。</p>
<div class="example"><p><code>
<IfModule mod_mime_magic.c><br />
</IfModule>
</code></p></div>
ディレクティブは
とてもよく似ていますが、稼働中のサーバのバージョンが特定のバージョンの時にのみ
適用されます。様々なバージョンの httpd を様々な設定で動作させることになる場合で、
テストスイートや巨大なネットワークでの用途を想定して、
このモジュールは設計されています。</p>
<div class="example"><p><code>
<IfVersion >= 2.1><br />
<span class="indent">
# this happens only in versions greater or<br />
# equal 2.1.0.<br />
</span>
</IfVersion>
</code></p></div>
<code class="directive"><a href="/mod/mod_version.html#ifversion"><IfVersion></a></code> ディレクティブは
テストの前に "!" を付けることで否定の条件を適用することができます。
また、これらのセクションはより複雑な制限を課すために入れ子にすることができます。
</p>
<div class="section">
<h2><a name="file-and-web" id="file-and-web">ファイルシステムとウェブ空間</a></h2>
<p>最もよく使われる設定のセクションコンテナはファイルシステムやウェブ空間の
特定の場所の設定を変更するものです。まず、この二つの違いを理解することが
大切です。ファイルシステムはオペレーティングシステムから見たディスクの内容です。
たとえば、デフォルトのインストールでは Apache は Unix ファイルシステムでは
(Apache では Windows でもパスセパレータとしてスラッシュを使うことに
気をつけてください。) 対照的に、ウェブ空間はあなたのサイトを
ウェブサーバから配信されるものとして見たもので、クライアントに見えるものです。
デフォルトの Unix 上の Apache のインストールではウェブ空間の
<code>/dir/</code> というパスはファイルシステムの
ウェブページはデータベースや他の場所から動的に生成することもできますので、
ウェブ空間はファイルシステムに直接マップする必要はありません。</p>
<h3><a name="filesystem" id="filesystem">ファイルシステムコンテナ</a></h3>
それらの正規表現版はディレクティブをファイルシステムの一部分に対して適用します。
中のディレクティブは指定されたディレクトリとそのすべてのサブディレクトリに
使うことでも同じ効果を得ることができます。例えば、次の設定では
ディレクトリインデックスを行ないます。</p>
<div class="example"><p><code>
Options +Indexes<br />
</Directory>
</code></p></div>
中にあるディレクティブはどのディレクトリにあるかに関わらず、指定された名前の
すべてのファイルに適用されます。ですから例えば以下の設定ディレクティブが
設定ファイルの主セクションに書かれたときには、すべての場所の
<div class="example"><p><code>
<Files private.html><br />
Order allow,deny<br />
Deny from all<br />
</Files>
</code></p></div>
<p>ファイルシステムの特定の場所にあるファイルを指定するために、
組み合わせることができます。例えば、次の設定では
<div class="example"><p><code>
<Files private.html><br />
Order allow,deny<br />
Deny from all<br />
</Files><br />
</Directory>
</code></p></div>
<h3><a name="webspace" id="webspace">ウェブ空間コンテナ</a></h3>
ウェブ空間上の内容に対して設定を変更します。
たとえば、次の設定では /private で始まる URL パスへのアクセスを制限します。
具体的には、
へのリクエストや、
他の同様に <code>/private</code> 文字列で始まるリクエストに
適用されます。</p>
<div class="example"><p><code>
<Location /private><br />
Order Allow,Deny<br />
Deny from all<br />
</Location>
</code></p></div>
ディレクティブはファイルシステムと関係ある必要が全くありません。
たとえば次の例では、どのようにして特定の URL を
内部ハンドラにマップするかを示しています。ファイルシステムに
<code>server-status</code> というファイルが存在する必要はありません。</p>
<div class="example"><p><code>
<Location /server-status><br />
SetHandler server-status<br />
</Location>
</code></p></div>
<h3><a name="wildcards" id="wildcards">ワイルドカードと正規表現</a></h3>
ディレクティブでは、 C 標準ライブラリの <code>fnmatch</code> のように
shell スタイルのワイルドカードキャラクタが使用できます。
"*" 文字は任意の文字列にマッチし、"?" 文字は任意の 1 文字にマッチし、
"[<em>seq</em>]" は <em>seq</em> の任意の文字にマッチします。
"/" 文字はどのワイルドカードでもマッチされません。
明示的に指定する必要があります。</p>
<p>これより柔軟なマッチングが必要な場合は、これらのコンテナに正規表現
(regex) 版である
があり、マッチを選択するのに perl 互換<a class="glossarylink" href="/glossary.html#regex" title="用語集を参照">正規表現</a>を使用できます。しかし、次の設定のマージに目を通して、
regex セクションを使用することで、ディレクティブの適用がどのように
変化するか把握しておいてください。</p>
<p>全ユーザディレクトリの設定を変更する、非 regex
ワイルドカードセクションは次のようになります。</p>
<div class="example"><p><code>
<Directory /home/*/public_html><br />
Options Indexes<br />
</Directory>
</code></p></div>
<p>regex セクションを使用することで、画像ファイルの多くのタイプに対する
アクセスを一度に拒否できます。</p>
<div class="example"><p><code>
<FilesMatch \.(?i:gif|jpe?g|png)$><br />
Order allow,deny<br />
Deny from all<br />
</FilesMatch>
</code></p></div>
<h3><a name="whichwhen" id="whichwhen">いつ何を使うか</a></h3>
<p>ファイルシステムコンテナとウェブ空間コンテナを使い分けるのは、
実際には非常に簡単です。ファイルシステムに依存する
オブジェクトにディレクティブを適応する場合は、必ず
を使用します。ファイルシステムに依存しないオブジェクト
(データベースから生成されるウェブページなど)
にディレクティブを適用する際には、
を使用します。</p>
<p>ファイルシステム上のオブジェクトへのアクセスを制限するために、
を決して使用ないようにしましょう。
同一のファイルシステム位置にマップしている、ウェブ空間位置 (URL)
が多数あって、設定した制限を迂回されてしまうかもしれないからです。
例えば次の設定を考えてみましょう。</p>
<div class="example"><p><code>
<Location /dir/><br />
Order allow,deny<br />
Deny from all<br />
</Location>
</code></p></div>
へのリクエストでは上手く動作します。しかし大文字小文字を区別しない
ファイルシステムを使っていたらどうなるでしょう?
へのリクエストで簡単にアクセス制限を迂回されてしまいます。これに対して
ディレクティブを使用すると、どのように呼び出されたかに関わらず
その場所から提供される内容に適用されます。
(例外はファイルシステムのリンクです。シンボリックリンクを使って、
同一のディレクトリを複数のファイルシステムに設置できます。
ディレクティブはパス名をリセットすることなくシンボリックリンクを
辿ります。ですから、高度なセキュリティが要求される場合は、
ディレクティブを使用してシンボリックリンクを無効にするべきです。)</p>
<p>大文字小文字を区別するファイルシステムを使用しているから上記のことは
無関係だと思われるかもしれませんが、
同一のファイルシステム位置に複数のウェブ空間位置をマップする方法は、
他にいくらでもあるということを覚えていてください。
ですからできる限りファイルシステムコンテナを使用してください。
しかしながら一つだけ例外があります。
<code><Location /></code> セクションはどんな URL
にも関わらず適用されるので、完全に安全です。</p>
<div class="section">
<h2><a name="virtualhost" id="virtualhost">バーチャルホスト</a></h2>
コンテナは特定のホストに適用するディレクティブを格納します。
一台のマシンで複数のホストを異なる設定で提供したいときに有用です。
詳細に関しては<a href="vhosts/">バーチャルホストドキュメント</a>を
ご覧下さい。</p>
<div class="section">
<h2><a name="proxy" id="proxy">プロクシ</a></h2>
プロクシサーバを経由してアクセスしたサイトに対してのみ適用される
ウェブサイトにアクセスするために用いられるプロクシサーバを
制限します。</p>
<div class="example"><p><code>
<Proxy http://cnn.com/*><br />
Order allow,deny<br />
Deny from all<br />
</Proxy>
</code></p></div>
<div class="section">
<h2><a name="whatwhere" id="whatwhere">どのディレクティブが使えるの?</a></h2>
<p>どのタイプの設定セクションでどのディレクティブが使用できるかは、
を見てください。
で使用可能なものは全て、同様に
セクションで使用可能です。しかしながら幾つか例外も存在します。</p>
<ul>
<li><code class="directive"><a href="/mod/core.html#allowoverride">AllowOverride</a></code> ディレクティブは
セクションでのみ使用可能です。</li>
<li><code>FollowSymLinks</code> と <code>SymLinksIfOwnerMatch</code> の
セクションか <code>.htaccess</code> ファイルでのみ使用可能です。</li>
セクションでは使用できません。</li>
</ul>
<div class="section">
<h2><a name="mergin" id="mergin">セクションのマージ方法</a></h2>
<p>マージの順番は以下のようになっています:</p>
<ol>
<li><code class="directive"><a href="/mod/core.html#directory"><Directory></a></code> (正規表現無し) と
<code>.htaccess</code> を同時に (<code>.htaccess</code> が許可されていれば、それが
</li>
<li><code class="directive"><a href="/mod/core.html#directorymatch"><DirectoryMatch></a></code>
(と <code><Directory ~></code></li>
<code class="directive"><a href="/mod/core.html#locationmatch"><LocationMatch></a></code> を同時に</li>
</ol>
以外は、それぞれのグループは設定ファイルに現れた順番に処理されます。
はディレクトリが短いものから長いものへと処理されます。ですから、
同じディレクトリに
適用される場合は、設定ファイル中の順番に従って処理されます。
によって挿入された設定は 挿入しているファイルの
ディレクティブの位置にあったかのように扱われます。</p>
<p><code class="directive"><a href="/mod/core.html#virtualhost"><VirtualHost></a></code> セクション中のセクションは
バーチャルホストの定義の外側の対応するセクションの
<em>後</em>に適用されます。これによりバーチャルホストが
メインのサーバ設定を上書きできるようなります。</p>
処理順番のうち、<code class="directive"><a href="/mod/core.html#directory"><Directory></a></code> コンテナの部分が
コンテナに取って代わられます。</p>
<p>後のセクションのディレクティブが前のセクションのものを上書きします。</p>
<div class="note"><h3>技術メモ</h3>
実際には、名前を変換する段階 (URL
をファイル名にマップするために <code>Alias</code> や
<code>DocumentRoot</code> が使用されるところ) の直前に
<code class="directive"><a href="/mod/core.html#location"><Location></a></code>/<code class="directive"><a href="/mod/core.html#locationmatch"><LocationMatch></a></code>
が行なわれます。
これらを適用した結果は変換が終わった後に完全に捨てられます。
</div>
<h3><a name="merge-examples" id="merge-examples">例</a></h3>
<p>次はマージの順番を示すための恣意的な例になっています。
リクエスト全てに適用されるとして、本例のディレクティブは
A > B > C > D > E の順番に適用されます。</p>
<div class="example"><p><code>
<Location /><br />
E<br />
</Location><br />
<br />
<Files f.html><br />
D<br />
</Files><br />
<br />
<VirtualHost *><br />
<Directory /a/b><br />
B<br />
</Directory><br />
</VirtualHost><br />
<br />
<DirectoryMatch "^.*b$"><br />
C<br />
</DirectoryMatch><br />
<br />
<Directory /a/b><br />
A<br />
</Directory><br />
<br />
</code></p></div>
<p>もっと具体的な、次の例を考えてみましょう。
セクションに設置されたアクセス制限に関わらず、
セクションが最後に評価されて、サーバへのアクセスは制限されません。
言い換えれば、マージの順番は重要で、注意して使用してください!</p>
<div class="example"><p><code>
<Location /><br />
Order deny,allow<br />
Allow from all<br />
</Location><br />
<br />
# Woops! This <Directory> section will have no effect<br />
<Directory /><br />
Order allow,deny<br />
Allow from all<br />
Deny from badguy.example.com<br />
</Directory>
</code></p></div>
</div></div>
<div class="bottomlang">
<p><span>言語: </span><a href="/en/sections.html" hreflang="en" rel="alternate" title="English"> en </a> |
</div><div id="footer">
<p class="apache">Copyright 2010 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>
<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>
</body></html>