Apache から Tomcat へのURLをリライトする

mod_rewrite を使用してURLを変更しても、mod_jk 経由での Tomcat へ渡されるURLには反映されない。
リクエストパラメータだけ反映される。

RewriteRule ^/(.*\.jsp)$   /test/$1?param=1234 [L]

というような設定で http://hoge.jp/ap/index.jsp にアクセスした場合、
apache 上では http://hoge.jp/test/ap/index.jsp?1234 というようにリライトされるが、

apache 上の rewrite 後URL
http://hoge.jp/ap/index.jsp
↓↓↓↓ rewrite ↓↓↓↓
http://hoge.jp/test/ap/index.jsp?1234

Tomcat へは http://hoge.jp/ap/index.jsp?1234 とパラメータだけ付加されて渡される。

Tomcat へリクエストされる URL
http://hoge.jp/ap/index.jsp
↓↓↓↓ rewrite ↓↓↓↓
http://hoge.jp/ap/index.jsp?1234

以下のように proxy 形式にすると rewrite されたURLとして引き渡してくれた

RewriteRule ^/(.*\.jsp)$   ajp://localhost:8009/test/$1?1234 [P]

mod_rewrite 以外にも mod_proxy と mod_proxy_ajp が必要。

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

Apache2.0系の場合

Apache2.0には mod_proxy_ajp がない。
mod_proxy_http によりリバースプロキシすれば同じような事が実現可能だけれど性能が悪そう。

RewriteRule ^/(.*\.jsp)$   http://localhost:8080/test/$1?1234 [P]