.htaccess
ファイルで使用されます。クライアントのホスト名、IP
アドレスや、環境変数などのリクエストの特徴に基づいて
アクセス制御を行なうことができます。
ホストによるアクセス制限とパスワードによる認証を、
同時に組み合わせて使うこともできます。
この場合、その二つの制限の関係を指定するために
一般的には、アクセス制限ディレクティブはすべてのアクセスメソッド
(GET
, PUT
, POST
など)
に適用されます。そして、ほとんどの場合これが望ましい動作です。
しかし、
このディレクティブの最初の引数は常に from
です。
それに続く引数は三つの違った形式があります。Allow from
all
が指定されていれば、すべてのホストにアクセスを許可し、
アクセス制限は下で説明されているように、
この文字列に合うか、これで終わる名前のホストのアクセスが許可されます。
各部分が完全に合うものだけに適用されますので、上の例は
foo.apache.org
にはマッチしますが、
fooapache.org
にはマッチしません。
この設定をすると、Apache は
アクセスを許可する IP アドレスです。
サブネットの制限用の、IP アドレスの最初の一つから三つまでのバイトです。
ネットワーク a.b.c.d とネットマスク w.x.y.z です。 より細粒度のサブネット制限用です。
ネットマスクが nnn の上位ビットが 1 となっているものからなること以外は前のものと同じです。
注: 最後の三つの例はまったく同じホストに合います。
IPv6 アドレスと IPv6 のサブネットは以下のように指定できます:
Allow from env=env-variable
が指定されていると、環境変数 env-variable
が存在した場合にリクエストはアクセスを許可されます。
Allow from env=!env-variable
が指定されていると、環境変数 env-variable
が存在しない場合にアクセス許可されます。
サーバは User-Agent
(ブラウザの種類)、Referer
や他の HTTP リクエストのヘッダフィールドなどに基づいて
アクセス許可をするために使うことができます。
この場合、user-agent の文字列が KnockKnock/2.0
で始まるブラウザのみがアクセスが許可され、
他のものはアクセスが拒否されます。
このディレクティブはホスト名、IP
アドレス、環境変数に基づいてサーバへのアクセスを制限します。
全ての
Order 設定は以下のどれかです。
Allow,Deny
Deny,Allow
Mutual-failure
Order Allow,Deny
と全く同じ効果を持ち、
そのため非推奨となっています。
キーワードの間に置けるのはコンマだけです。 間に空白があってはいけません。
マッチ | Allow,Deny 時の結果 | Deny,Allow 時の結果 |
---|---|---|
Allow だけにマッチ | 許可 | 許可 |
Deny だけにマッチ | 拒否 | 拒否 |
どちらにもマッチしない | 2番目のディレクティブがデフォルト: 拒否 | 2番目のディレクティブがデフォルト: 許可 |
Allow と Deny 両方にマッチ | 最後にマッチしたほう: 拒否 | 最後にマッチしたほう: 許可 |
以下の例では、apache.org ドメインのすべてのホストはアクセスを許可されます。 他のすべてのホストはアクセスを拒否されます。
次の例では、foo.apache.org サブドメインにあるホスト以外の、
apache.org ドメインのすべてのホストがアクセスを許可されます。
apache.org
ドメインでないホストは、デフォルトの状態が
一方、上の例の Deny,Allow
に変わっていれば、すべのホストにアクセスが許可されます。
これは、設定ファイル中の実際の順番に関わらず、
Allow from apache.org
が最後に評価されて、
Deny from foo.apache.org
を上書きするからです。
apache.org
ドメインにないホストも、デフォルトの状態が
はデフォルトのアクセス状態が
/www
ディレクトリへのすべてのアクセスを拒否します。
.htaccess
ファイルの
All
か Any
です。このディレクティブはある場所へのアクセスがユーザ名/パスワード
とクライアントのホストのアドレスで制限されているときにのみ
役立ちます。デフォルトの動作 (All
) はクライアントがアドレスによる
アクセス制限を満たし、かつ正しいユーザ名とパスワードを入力することを
要求します。Any
では、クライアントはホストの制限を満たすか、
正しいユーザ名とパスワードの入力をするかをすればアクセスを許可されます。
これは、ある場所をパスワードで保護するけれど、特定のアドレスからの
クライアントにはパスワードの入力を要求せずにアクセスを許可する、
というようなときに使用できます。
例えば、同じネットワーク上にいる人にはウェブサイトのある部分について 無制限のアクセスを許したいけれど、外のネットワークの人には パスワードを提供させるようにするためには、次のような設定をすることが できます:
バージョン 2.0.51 からは