特定の URL のみ Basic 認証をかける・除外する (Apache 2.2)
Apache 2.2 を使用している Web サーバで、 .htaccess のみを使い特定の URL のみ Basic 認証を外す必要があり調べた。
特定の URL のみ Basic 認証をかける
## Allow と Require のいずれかの許可があればアクセス可能にする Satisfy Any ## /members/ で始まる URL へのアクセスを禁止する SetEnvIf REQUEST_URI "^/members/" restricted_url Order allow,deny Allow from all Deny from env=restricted_url ## /members/ 以下でも Basic 認証を通過すればアクセスできる AuthUserFile "/path/to/.htpasswd" AuthGroupFile /dev/null AuthName "Restricted Files" AuthType Basic require valid-user
ここで SetEnvIf に指定している "^/members/"
の部分は正規表現で記述する。単に "/members/"
と記述すると /sub/members/directory にもマッチするので注意。
特定の URL のみ Basic 認証を除外する
## Allow と Require のいずれかの許可があればアクセス可能にする Satisfy Any ## /images/ で始まる URL へのアクセスを常に許可する SetEnvIf REQUEST_URI "^/images/" allowed_url Order deny,allow Deny from all Allow from env=allowed_url ## それ以外の URL は Basic 認証を通過すればアクセスできる AuthUserFile "/path/to/.htpasswd" AuthGroupFile /dev/null AuthName "Restricted Files" AuthType Basic require valid-user