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]