BASIC認証とorder deny,allowをあわせたアクセス制御
いつも忘れるので書いておこう。
ある場所からは認証なしでページ閲覧できて、
他の場所からは認証が必要になるというパターンの.htaccessの書き方。
もちろん、httpd.confなどに直接書いてもOKです。
【条件】
mod_access モジュールが有効になっていること
mod_auth モジュールが有効になっていること
○httpd.conf
AllowOverride Limit AuthConfig
○.htaccess
# "Limit"ルール
#
# この書き方に違和感を覚える人もいるかもしれませんが、
# (特にルーターの設定をする人)
# ルーターのACLは上から評価していって、
# 適合するものがあったらその時点で評価は終了しますが、
# Apacheのこれは、Orderの順番で必ず両方を評価していき、
# 下位のACLが上位のACLを上書きしていきます。
# つまり、172.16.0.1の場合、"Deny from all"で拒絶対象となりますが
# 次の"Allow from 172.16."で救済されるわけです。
#
Order Deny,Allow
Deny from all
Allow from 10.0.0.32/27 172.16. 192.168.0.1 .example.local#
# "AuthConfig"ルール
#
AuthUserFile /var/www/htpasswd
AuthName "Secret Area"
AuthType Basic
require valid-user#
# Sastisfy any だと"Limit"と"AuthConfig"どちらかにパスすればOKです。
# これを Satisfy all とすると、
# "Limit"と"AuthConfig"両方の条件を満たさないとOKとなりません。
Satisfy any