クライアントからのアクセスを制御するためのディレクティブは、適用範囲を特定ディレクトリに限定する目的で
<Directory>,
<Files>,
<Location> 等のブロック ディレクティブ内や
.htaccess ファイルで使用される。
ディレクトリに対して使用可能な機能を設定・制限する。
Options [+|-]option [[+|-]option] ...
- default : FollowSymLinks
- option には次のキーワードを指定する。
- All
MultiViews を除いた全ての機能が有効となる。
- ExecCGI
CGI スクリプトの実行を許可する。
このオプションが設定されていない場合は、CGI スクリプトは実行できない。
サーバーはシンボリックリンクを追跡する。 また SSI の利用を許可する。
- FollowSymLinks
シンボリックリンクをによるファイル参照を許可する。
- Includes
SSI の利用を許可する。
このオプションが設定されていない場合は、SSI の利用はできない。
- Indexes
リクエストが下記条件に合致する時、ディレクトリ内のファイル名一覧を返す。
- リクエスト URL にファイル名がない。
- リクエスト URL に合致 (マップ) するディレクトリが存在する。
- 該当ディレクトリ内に DirectoryIndex で指定したファイル(デフォルトは index.html 等)が存在しない。
- SymLinksIfOwnerMatch
ファイルやディレクトリの所有者と、シンボリックリンクの所有者が同一の場合のみリンクを辿ることを許可する。
- +, - の作用
あるディレクトリに対して複数の Options が 適用可能な場合、当該ディレクトリに最も近い <Directory> ディレクティブの Options のみが適用される。
しかし、すべての Option が + や - 付きで 指定された場合は、Option の値は現在の設定値から加減される働きをする。
例えば、次のように + や - を付けない場合、
ディレクトリ /var/www/html/subdir には Includes のみが適用される。
しかし、次のように Option の前に + や - を置くと、
ディレクトリ /var/www/html/subdir に適用されるのは、Indexes と Includes になる。
ここで注意が必要なのはすべての Option に +, - を付けなければならない点で、以下のように +, - を忘れると、
ディレクトリ /var/www/html/subdir には FollowSymLinks のみが適用されることになる。
2 つのディレクティブは特定クライアントのアクセスを 許可/拒否 する目的で使用する。
通常、これらディレクティブは Order ディレクティブとの組み合わせで使用される。
Allow from HostNameList [HostNameList] ....
Deny from HostNameList [HostNameList] ....
- default : Allow from all
- ディレクトリに対するアクセスを、HostNameList に指定するドメイン名や IP アドレスで制御する。
- Allow はアクセスの許可設定に、Deny はアクセスの拒否設定に使用する。
- 第1引数は from 。
- HostNameList には次のいずれかを使用する。
- All
すべてのクライアントからのアクセスを許可 (Allow) または拒否 (Deny) する。
- ドメイン名
ドメイン名が完全に一致するホスト、またはドメイン名がこの文字列で終わるホストからのアクセスを許可 (Allow) または拒否 (Deny) する。
例えば、HostNameList に project.ed.jp を指定した場合は、
アクセス元ホスト名 | | project.ed.jp との比較 |
apache.project.ed.jp | → | 一致 |
project.ac.jp | → | 不一致 |
となる。
※ ドメイン名による制御は、次の理由から敬遠されることが多い。
- IP アドレス
- 合致する IP アドレスのアクセスを許可 (Allow) または拒否 (Deny) する。
- IP アドレスの設定には、完全な IP アドレス指定 (特定端末) やサブネットマスクを使用する方法等がある。
- IP アドレスの設定例
HostNameList の設定値 | | 制御対象 IP アドレス |
10.2.3.220 | → | 特定の1端末を指定 |
10.2.3.208/28 | → | 10.2.3.208 〜 10.2.3.223 を指定 |
10.2.3.0/255.255.255.0 | → | 10.2.3.0 〜 10.2.3.255 を指定 |
10.2.3. | → | 10.2.3.0 〜 10.2.3.255 を指定 |
web アクセスのデフォルト動作 (許可/拒否) を設定する。
Allow や Deny ディレクティブが記述されている場合、設定値に基づいた順序でディレクティブ内容を評価し、
アクセス制御条件を決定する。
Order (deny,allow | allow,deny | mutual-failure)
- default : allow,deny
- deny,allow
デフォルトで web アクセスを許可する。
Allow, Deny ディレクティブが記述されている場合、Deny, Allow の順に評価する。
- allow,deny
デフォルトで web アクセスを拒否する。
Allow, Deny ディレクティブが記述されている場合、Allow, Deny の順に評価する。
- mutual-failure
Allow のリストに現れ、Deny のリストに現れないホストのアクセスを許可する。
この設定値は Order allow,deny と同じ効果であり、そちらを使用するよう推奨されている。
パスワード認証 (Require) と アクセス制御 (Allow, Deny) の両方が使われている時のアクセスポリシーを設定する。
Satisfy ( Any | All )
- パラメータは次のいずれかを使用する。
- All
両方の制限をパスしたユーザーのみアクセスが許可される。
- Any
どちらか一方のアクセス制限をパスすることで、アクセスは許可される。
- 無設定の場合、All が適用される。
コントロール ファイル
※名を指定する。
AccessFileName FileName
- default : .htaccess
- AccessFileName はグローバルであり、ディレクトリごとの設定はできない。
ユーザーのディレクトリ上に配置することで、ディレクトリ独自のアクセス制限を可能とする。
ファイルには実現したいディレクティブを記述する。
- 記述できるのは AllowOverride で許可されたディレクティブのみ。
- ディレクティブを記述したファイル (.htaccess) をディレクトリに保存することで、サーバーの再起動なしに設定ディレクティブの変更が可能。
- 上記理由から、ユーザーが自分の管理しているページ (ディレクトリ) に対して、独自のディレクティブを適宜設定可能。
- .htaccess はデフォルトのファイル名であり、AccessFileName ディレクティブで変更可能。
.htaccess による上書きを許可するディレクティブを指定する。
AllowOverride DirectiveGroup
- AllowOverride は <Directory> ブロック内でのみ使用可能。
- DirectiveGroup で指定可能なディレクティブ グループ名。
- AuthConfig
パスワード認証に関するディレクティブの上書きを許可する。
- FileInfo
ドキュメント タイプに関するディレクティブ等の上書きを許可する。
- Indexes
ディレクトリ インデックス制御関連ディレクティブの上書きを許可する。
- Limit
アクセス制御用ディレクティブの上書きを許可する。
- Options
ディレクトリにおける機能制御用ディレクティブの上書きを許可する。
- All
上記すべての上書きを許可する。
- None
すべての上書きを禁止する。
.htaccess ファイルは無視される。
- AllowOverride を (None 以外に) 設定すると、サーバーはリクエスト パスの途中ディレクトリも含めてコントロール ファイルを検索する。
サーバーの負荷が増大するため、パフォーマンスを重視する場合は注意を要する。
指定する。