セクション <Directory>
,
<Location>
, <Files>
には、それぞれ指定されたディレクトリ、URL,
ファイルにのみ適用されるディレクティブを書くことができます。
また、ディレクトリにディレクティブを適用するためにディレクトリ中に
.htaccess ファイルを使用することもできます。このドキュメントは
これらのセクションの違いを説明し、それらと、ディレクトリや
リクエストされた URL に Apache がどのディレクティブを
適用するかを決定する方法との関係を説明します。
構文上 <Directory>
に書けるものはすべて <Location>
にも書くことができます (<Files>
セクションは例外です)。しかし、中には
AllowOverride
や FollowSymLinks
と SymLinksIfOwnerMatch
という二つのオプションのように、<Location>
,
<LocationMatch>
,
<DirectoryMatch>
中では意味のないものもあります。
同様のことが <Files>
にも言えます。構文的にはすべて大丈夫ですが、
意味的にはそうでないものもあります。
マージの順番は以下のようになっています:
<Directory>
(正規表現無し) と
.htaccess を同時に (.htaccess が許可されていれば、それが
<Directory>
を 上書きします)
<DirectoryMatch>
と正規表現のある
<Directory>
<Files>
と
<FilesMatch>
を同時に<Location>
と
<LocationMatch>
を同時に<Directory>
以外は、それぞれのグループは設定ファイルに現れた順番に処理されます。
<Directory>
(上のグループ 1)
はディレクトリが短いものから長いものへと処理されます。複数の
<Directory>
セクションが同じディレクトリに
適用される場合は、設定ファイル中の順番に従って処理されます。
設定ファイルは httpd.conf, srm.conf, access.conf
の順に処理されます。Include
によって挿入された設定は 挿入しているファイルの
Include
ディレクティブの位置にあったかのように扱われます。
<VirtualHost>
セクション中のセクションは
バーチャルホストの定義の外側の対応するセクションの
後に適用されます。これによりバーチャルホストが
メインのサーバ設定を上書きできるようなります。(注意: これは
1.2.2 以降と 1.3a2 以降でのみ正しく動作します。
これらのリリースより前のものはバーチャルホストの中のセクションは
メインサーバの前に適用されていました)。
後のセクションのディレクティブが前のセクションのものを上書きします。
一般的なガイドラインは:
<Directory>
と <Files>
を使う必要があります。<Location>
を使う必要があります。重要な例外は:
<Directory>
を通して行なわれます。これはプロキシが
<Location>
より前から存在したことによるミスです。将来の設定言語ではおそらく
<Location>
に切り替えられるでしょう。.htaccess ファイルの解析に関する注意:
<Location>
とシンボリックリンク:
Options FollowSymLinks
" や
"Options SymLinksIfOwnerMatch
" は
<Location>
,
<LocationMatch>
,
<DirectoryMatch>
セクションでは使うことができません
(それらのオプションは単に無視されます)。それらのオプションは
<Directory>
セクション (もしくは
.htaccess
ファイル) の中でのみ使用可能です。<Files>
と Options
:
<Files>
セクションの中で Options
ディレクティブを使用しても効果はありません。他の注意:
Alias
や
DocumentRoot
が使用されるところ) の直前に
<Location>
/<LocationMatch>
が行なわれます。
これらを適用した結果は変換が終わった後に完全に捨てられます。