私の問題は次のとおりです。Windowsの1つのホスト(テスト環境では192.168.1.2)で実行されているAJP 1.3コネクタを備えたJBoss 4.2.3アプリケーションサーバーと、別のFreeBSDボックス(192.168.1.10)で実行されているApache 2.2.14があります。Apache はすべてのリクエストの「フロント ゲート」として機能し、mod_jk を介してそれらを JBoss に送信します。SEO の最適化を行う必要があるまでは、すべてが正常に機能していました。これらの最適化には SEF URL が含まれているため、JBoss に送信される前にリクエストを変更するために、Apache に mod_rewrite を使用することにしました。基本的に、2 つのルールを実装する必要があります。
- 「 http://hostname/directory/ 」などの古いルールを「 http://hostname/」に永久リダイレクトでリダイレクト
- 「 http://hostname/wtf/123/」のような URL を「http://hostname/wtf/view.htm?id=123 」に転送して、エンド ユーザーが「醜い」URL (実際の書き換え) を見ないようにします。 )。
テスト仮想ホストの Apache 構成は次のとおりです。
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/www/dummy"
ServerName 192.168.1.10
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule /directory/(.*) /$1 [R=permanent,L]
RewriteRule ^/([^/]+)/([0-9]+)/?$ /$1/view.htm?id=$2
</IfModule>
JkMount /* jsp-hostname
ErrorLog "/var/log/dummy-host.example.com-error_log"
CustomLog "/var/log/dummy-host.example.com-access_log" common
</VirtualHost>
問題は、2 番目の書き換え規則が機能しないことです。リクエストが変更されずに JBoss にすり抜けるため、Tomcat 404 エラーが発生します。しかし、次のような 2 番目のルールにリダイレクト フラグを追加すると、
RewriteRule ^/([^/]+)/([0-9]+)/?$ /$1/view.htm?id=$2 [R,L]
それは魅力のように機能します。しかし、リダイレクトはここで必要なものではありません:)。問題は、リクエストが別のホスト (192.168.1.2) に転送されることだと思いますが、それを機能させる方法がまったくわかりません。どんな助けでも大歓迎です:)