Apache-Tomcatを連携させた状態でのURLによるアクセス制御-その2

さらに、/foo/hoge*.jspへのアクセス時に、UserAgentまでみてアクセス制御をしたい。


例えば、UserAgentが携帯のときは、/foo/hoge_ms_*.jspのみアクセス可能にし、携帯用のコンテンツ以外にはアクセスさせないようにしたい。

例によって、Apacheだけでやってみる場合は、以下のように書くとちゃんとできる。

LoadModule rewrite_module modules/mod_rewrite.so
・・・

    ServerName www.hoge.com
    ・・・
    RewriteEngine On
    
    RewriteCond   %{HTTP_USER_AGENT}   ^DoCoMo.*   [NC]
    RewriteRule   !/foo/hoge_ms_.*.jsp   /DummyNotExist.html  [L]
    
    # 存在しないURLに飛ばして無理やりNotFoundにしている。
    RewriteRule   !/foo/hoge.*   /DummyNotExist.html  [L] 

ただ、こいつもTomcatと連携した場合には、mod_rewriteに処理が渡らないため、うまく動かなくなる。


で、mod_jk2のworkers2.propertiesでどうにかできないか調べたけど、UserAgentまで見れないみたい。


そうなると、もう、Tomcat側でどうにかするのがよいような気がする。
とりあえず、ServletFilterか?


わかったことは。


Tomcatに割り当てられていないURLでアクセス制御をしたければ、Apacheでもできるけど、
Tomcatに割り当てられたURLで、細かいアクセス制御をしたければ、ServletFilterなりなんなりで、Tomcat側でやれ!と。