要件
- ドキュメントルート(
/var/www/html
) 配下にBasic認証をかける- ただし、特定ディレクトリ(
/var/www/html/secret
) 配下は、Basic認証でなく、IP制限とする
- ただし、特定ディレクトリ(
Apache HTTP Server 2.2
ググると、だいたいこんなやつがでてくる。
<Directory "/var/www/html"> AuthType Basic AuthName "basicauth" AuthUserFile /etc/httpd/.htpasswd Require valid-user </Location> <Directory "/var/www/html/secret"> Order deny,allow Deny from all Allow from xxx.yyy.zzz.nnn Satisfy Any </Directory>
これだと、指定IP以外からのアクセスでも、Basic認証が通れば/secret
が開ける ( Satisfy Any
なので )。
現実的には問題無いかもだけれど、どうやってググっても、要件を満たすようなやり方(/secret
以下はBasic認証を外す方法)が見つからないゾ……
Apache HTTP Server 2.4
<Directory "/var/www/html"> AuthType Basic AuthName "basicauth" AuthUserFile /etc/httpd/.htpasswd Require valid-user </Location> <Directory "/var/www/html/secret"> # デフォルトでAuthMerging Offなので # 明示的に書かなくても同じこと AuthMerging Off Require ip xxx.yyy.zzz.nnn </Directory>
AuthMerging Off
のおかげで、サブディレクトリのディレクトリで新しくRequire hogehoge
を書けば、
親ディレクトリのRequireが打ち消されて要件が満たせるゾ。