【目的】
Aipoのタイムカード操作についてのみ、許可IP以外からはBASIC認証としたい
【参考】
ApacheでQueryString(URLパラメータ)の値によってBASIC認証をかけたい!
qiita.com
こちらが大変参考になった。ただ、上記にある
> RewriteRule (.*) $1 [E=admin_access:1]
だと、すべてをいったんリライトしてしまっていて、タイムカードのPOSTがGETになる件
hakobe932.hatenablog.com
があって、期待通りに動作しなかった。
【解決】
上記のキモはenvに値を載せて、その値があるときだけBasic認証、なので、リライトしない(-)
> RewriteRule .* - [E=admin_access:1]
でいいのかなと。
Aipoではタイムカードを投稿・修正するとき「template=ExtTimecard」というクエリストリングがPOSTされているので、これを条件にして以下の様にしてみました。
※なお、Aipoは
ameblo.jp
この辺参考に、tomcat直じゃなくてapache経由で接続している前提で、あくまでApacheのallow/denyで解決しています。
Basic認証する場合
RewriteEngine On # 許可IP群でない、かつクエリストリングがマッチしたらtmcrdに1 RewriteCond %{REMOTE_ADDR} !^xxx.xxx.xxx.xxx RewriteCond %{REMOTE_ADDR} !^xxx.xxx.xxx.xxx RewriteCond %{QUERY_STRING} template=ExtTimecard RewriteRule .* - [E=tmcrd:1] <Location /> Order allow,deny Allow from All Deny from env=tmcrd AuthType Basic AuthName "Restricted Area" AuthUserFile "/hoge/fuga/.htpasswd" Require valid-user Satisfy Any </Location>
Basic認証がいらない場合
RewriteEngine On # 許可IP群でない、かつクエリストリングがマッチしたらリライトせず403終了 RewriteCond %{REMOTE_ADDR} !^xxx.xxx.xxx.xxx RewriteCond %{REMOTE_ADDR} !^xxx.xxx.xxx.xxx RewriteCond %{QUERY_STRING} template=ExtTimecard RewriteRule .* - [F]