アクセス制御メモメモ。problem:あるディレクトリ以下に対して、以下のようなアクセス制御をしたい。solution:foo/barにて件のアクセス制御を行うとして、httpd.confで以下のようにします。</Directory>この場合、172.16.1.6からのアクセスについてはユーザ認証が求められ、それ以外の172.16.0.0/16からは認証なしでアクセス可能です。172.16.0.0/16以外からはforbiddenになります。キモはmod_rewriteのRewriteCond/RewriteRuleを<Directory>や<Location>、.htaccessの*中に書かず*にhttpd.confの<VirtualHost>のすぐ内側かあるいはすべてのブロックの外側に書くことです。このキモをはずしますと、172.16.0.0/16以外からのアクセスにおいて、いったん認証させておいてからforbiddenにするという動作になります。先の設定は例はmod_rewriteによる処理がmod_accessやmod_authによる処理よりも先に行われるということを利用したものです。.htaccess、<Location>、<Directory>の中に書けません。残ったリクエストについてはmod_accessとmod_authのどちらかをパスしたものだけ通すという設定をすることで目的を達成できると思います。Any」というのが「どちらかをパスしたものだけ通す」という指定になります。実際にはmod_accessの処理のほうが先に行われますから、mod_accessのDeny条件によって拒絶されたリクエストについては認証のチャンスが与えられるという感じになります。