/Context を介してアクセスできる多数の webapps を含む単一の Tomcat インスタンスがあります。Tomcat は httpd (実際には Debian Apache2) の背後にあり、各アプリ/コンテキストを提供する仮想ホストで構成されています。Tomcat 接続は mod_jk を使用します。
URL からコンテキストを削除することを気にしない場合、これは問題なく機能します。仮想ドメインのルートが要求されると、要求されたドメインは domain.com/Context にリダイレクトされます。
ただし、あるアプリでは、コンテキストを削除したいと考えています。これは、mod_rewrite を使用し、書き換えた URL を mod_jk に渡して、正しい Tomcat コンテキストに渡すことで実現できると思います。したがって、私の Debian Apache2 サイトで利用可能なファイルは次のようになります。
NameVirtualHost *
<VirtualHost *>
ServerName domain.be
DocumentRoot /home/webapp/app/static/domain/
RewriteEngine on
RewriteRule ^/(.*)$ /Context/$1 [L,PT]
RewriteLog "/var/log/apache2/domain-rewrite.log"
RewriteLogLevel 4
JkLogFile /var/log/apache2/domain-mod_jk.log
JkLogLevel debug
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkMount /Context w1
JKMount /Context* w1
JkOptions +ForwardURICompat
ErrorLog /var/log/apache2/domain_error.log
CustomLog /var/log/apache2/domain_access.log combined
LogLevel warn
</VirtualHost>
ドキュメントによると、[PT] フラグと +ForwardURICompat オプションにより、書き換えられた URL が jk_mod に渡されるはずです。しかし、それは起こっていないようです。
URL は書き直されていますが、mod_jk がそれを無視しているように見えます。
何か案は?ちなみに、現在 mod_proxy は使えません。
ありがとう