Apacheで特定のQueryString(URLパラメータ)に応じてBASIC認証をかける必要が出てきたのでRewriteを用いて対応しました。
設定したいこと
- 「area=admin」がQueryStringに設定されている場合BASIC認証をかける。
- 「area=admin」がない場合はそのまま表示できる。
当初は、 SetEnvIf を用いていけるかな?と考えていたけど、SetEnvIf の REQUEST_URIにはQueryStringは含まれていない。
「むー、こまった。」と途方に暮れていたらQueryStringを扱うにはRewriteを使いなさいと書いてあったので早速検討した。
「なんでBASIC認証かけるのにRewriteなんだよ。。。」ってブツブツ言いながら以下の設定をApacheに追加したら思ったとおりの挙動となりました。
Apacheの設定
httpd.conf
RewriteEngine On
RewriteCond %{QUERY_STRING} area=admin
RewriteRule (.*) $1 [E=admin_access:1]
<Location />
Order allow,deny
Allow from All
Deny from env=admin_access
AuthUserFile /etc/httpd/conf/.htpasswd
AuthGroupFile /dev/null
AuthName "Administorator's Area"
AuthType Basic
require valid-user
Satisfy Any
</Location>
やっぱり、ちょっと違和感あるな。。。(^_^)
ほかに方法ないのかな~
参考にさせていただいたサイト
まとめサイト: SetEnvIf の Request_URI には Query String は含まれない
wall-climb » 特定URLのみBASIC認証を除外する