2

私の問題は次のとおりです。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 つのルールを実装する必要があります。

テスト仮想ホストの 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) に転送されることだと思いますが、それを機能させる方法がまったくわかりません。どんな助けでも大歓迎です:)

4

2 に答える 2

2

2 番目の書き換えルールが機能しない理由は、「?」を使用しているためです。URI 定義に含まれており、URI 定義にセパレーター「?」が含まれることはありません。したがって、それなしで単に書き換えルールを使用してください。例えば。

RewriteRule ^/([^/]+)/([0-9]+)/$   /$1/view.htm?id=$2 [R,L]
于 2010-04-12T09:14:30.920 に答える
0

RewriteRule最初のルールの最後にがあるため、単純に機能しません[L]。これは、処理する最後のルールであることを意味します。

于 2012-04-23T18:25:03.590 に答える