LoginSignup
9

More than 5 years have passed since last update.

ApacheでQueryString(URLパラメータ)の値によってBASIC認証をかけたい!

Last updated at Posted at 2014-08-22

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認証を除外する

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
9