11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

11
9
0

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
  3. You can use dark theme
What you can do with signing up
11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?