ディレクトリごとに設定を上書きできる.htaccessファイルの利用方法も紹介します。

 Apacheの設定ファイルは,サーバーの管理者といった特別なアカウントでないと書き換えることはできません。

 しかし,システムの管理者とWebサーバーの管理者,コンテンツの管理者といったように複数の管理者が混在している場合,不便が生じる場合があります。例えば,コンテンツの管理者が特定のディレクトリでCGIを利用したくなった場合,その都度システムの管理者に設定をしてもらう必要があるからです。

 こうした際に役立つのが「.htaccess」ファイルです。設定を行いたいディレクトリに設定内容を書き込んだ.htaccessファイルを配置しておくと,そのディレクトリにアクセスがきた際には,.htaccessファイルが読み込まれて,その設定が有効になります。例えば,サイト全体でCGIを実行できないようにしていても,.htaccessファイルにCGIを許可するように記述すれば,そのディレクトリ内だけはCGIの実行が可能になります。こうすることで,コンテンツ管理者はシステムの管理者に頼まなくても設定を変更できます。

.htaccessファイルを有効にする

 .htaccessを不用意に有効にしておくのは,セキュリティ上大変危険です。.htaccessファイルはインターネットから閲覧できるディレクトリに配置するため,Apacheの設定によっては,だれでも.htaccessファイルを閲覧できてしまうからです。そこでApacheでは,デフォルトで.htaccessファイルを閲覧できないように設定されています。Fedora8のApacheでもこの設定が施されています。初期設定は図1のように,「.ht」から始まるファイルに対するクライアントからのアクセスを拒否するようになっています。

<File ~ "^.ht">
            Order allow,deny 
            Deny from all 
</FileMatch>"
図1●.htaccessファイルにはアクセスできない
初期設定では.htaccessファイルにアクセスできないように(.htaccessが無効に)設定されている。

 .htaccessを有効にするには,「AllowOverride」項目を利用します。AllowOverrideには.htaccessで可能な設定を許可する機能を列挙していきます。利用できる機能は表1があります。例えば,アクセス制限を.htaccessで行うことを許可するには,

AllowOverride Limit

と記述します。複数の項目について設定の上書き許可を行えるようにするには,スペースで区切りながら項目を列挙します。

 例えば,AuthConfigとLimitの書き換えを許可するには,

AllowOverride AuthConfigLimit

と記述します。

表1●AllowOverrideに指定できる項目
表の項目を利用して.htaccessファイルを選択する。
[画像のクリックで拡大表示]
表1●AllowOverride に指定できる項目

 また,Optionsについては,AllowOverrideに「Options=」と記述し,その後に設定を許可する機能をカンマで区切りながら列挙します。ただし,カンマの前後にはスペースを入れてはいけません。ExecCGIとIncludesNOEXECの2つについて書き換えを許可したい場合は,

AllowOverride Options=ExecCGI,IncludesNOEXEC

と記述します。

 ドキュメント・ルート以下のディレクトリで.htaccessを利用してアクセス制限とCGIの実行を許可するには,図2のように,AllowOverrideを変更します。

図2●ドキュメント・ルートにAllowOverride の設定例
図2●ドキュメント・ルートにAllowOverride の設定例
コメントは省略している。