命令指令
規則order deny,allow
およびは、およびディレクティブが処理されるorder allow,deny
順序を定義します。すべての許可ルールと拒否ルールが処理され、最終的な関連ルールが以前のルールを上書きします。確認については、mod_authz_host モジュールのドキュメントのOrder Directiveセクションを参照してください。deny from
allow from
最初の一致のみが使用される一般的なファイアウォールとは異なり、すべての許可および拒否ディレクティブが処理されることに注意してください。最後の一致が有効です (典型的なファイアウォールとは異なります)。さらに、構成ファイルに表示される行の順序は重要ではありません。すべての許可行は 1 つのグループとして処理され、すべての拒否行は別のグループと見なされ、デフォルト状態はそれ自体で考慮されます。
たとえば、許可ルールの前に拒否ルールを処理すると、許可された IP アドレスのホワイトリストを効果的に作成できます。
order deny,allow
deny from all
allow from 127.0.0.1
逆に、次の例では、拒否された IP アドレスのブラックリストに対して、拒否ルールの前に許可ルールを処理します。
order allow,deny
allow from all
deny from 127.0.0.1
継承
サブディレクトリは、独自のルールを宣言しない限り、親ディレクトリのルールを継承します。サブディレクトリが order ディレクティブまたは allow/deny ディレクティブを使用する場合、親からのルールは継承されません。この動作の確認については、このドキュメントの「構成セクションのマージ」セクションに言及しているバグ 52406を参照してください。
mod_access_compat などのマージ ロジックを実装しないモジュールの場合、後のセクションでの動作は、後のセクションにモジュールからのディレクティブがあるかどうかによって異なります。構成は、変更が行われるまで継承されます。変更が行われた時点で、構成は置き換えられ、マージされません。
簡単なテスト
この動作を確認するために、この簡単なテストを行うこともできます。
次の行を親ディレクトリに配置し.htaccess
ます。
order deny,allow
deny from all
子ディレクトリ内の次の行のいずれかまたはすべて.htaccess
。
order deny,allow
deny from 0.0.0.0
deny from all
親ディレクトリにはディレクティブが含まれ、子ディレクトリにはallow from
ディレクティブがありませんが、子ディレクトリが公開されていることがわかります。
結論
ドキュメントと実験に基づいて、親ディレクトリが子ディレクタのディレクティブをオーバーライドすることは、どのような方法でも不可能であるようです。