設定ファイルはインストールディレクトリの「conf/httpd.conf」がデフォルトです。Apacheの起動時にコマンドラインから引数で指定することもできます。
Apacheの設定ファイルは、かなり長くなります。ただし、設定ファイルを分割できるようになっています。分割整理すれば、管理も容易になります。設定ファイルを分割するときは、次のように「Include」ディレクティブを使います。こうすると指定したファイルがその場所に読み込まれるようになります。
ディレクティブを記述する位置が大きく関係する例として、セクションが挙げられます。あるディレクトリの中でのみ設定を変更したいというようなときに利用するものです。セクションはHTMLのようなタグを使って設定します。例えばディレクトリのセクションの場合、次のようになります。
FooDirective Off <Directory "/foo/"> FooDirective On </Directory>
この例では、「FooDirective?」の設定は「/foo/」ディレクトリにアクセスしたときだけ「On」になり、そうでないときは「Off」になります。ディレクトリではなく、ファイル名やURLを指定するセクションもあります。セクションの内側にさらにセクションを設定して、入れ子にすることもできます。
上記の例の3行目にある「FooDirective?」に注目してください。このディレクティブの有効範囲はセクション内に限定している、ということができます。この範囲をスコープといいます。セクションに入っていないディレクティブは、サーバ全体をスコープとしたものになります。
ディレクティブによっては、セクションでは使えないものや、セクション内部でしか使えないものがあります。例えば、サーバのポート番号を設定するディレクティブは、セクション内部では使えません。これはサーバ全体にかかわる設定であり、個別に変えられる性質の設定ではないためです。
つまり、それぞれのディレクティブは使える場所があらかじめ決まっているということです。これをコンテキストと呼びます。コンテキストとは「文脈」といった意味です。文章でも、文脈によってふさわしくない表現というものがありますが、それと同じようなことです。コンテキストによっては、使えないディレクティブがあるわけです。
コンテキストには、サーバ設定、バーチャルホスト、ディレクトリ、.htaccessの4種類があります。すべてのコンテキストで使えるディレクティブもあれば、1種類のコンテキストでしか使えないものもあります。それぞれのディレクティブがどのコンテキストで使えるかを調べるには、Apacheのサイトにあるドキュメントを参照してください。
.htaccessのコンテキストは、前述の「.htaccess」ファイル内を指します。「.htaccess」ファイルはサーバ管理者でなくても作成できますので、簡単に変更させてはいけない設定はこのコンテキストでは使えなくなっています。また、コンテキストとは別に、「.htaccess」で上書き設定を許すかどうかという設定もあります。これは次回以降解説します。