web-dev-qa-db-ja.com

Jboss + mod_rewrite =?

ApacheとJbossの2つのサーバーがあります。 JKmountを使用すると、.warファイルがマウントされ、複雑なサイトが表示されます。

例えば:

JkMount /directory/* ajp13
Alias /directory /jboss/server/default/deploy/directory.war
<Directory  /jboss/server/default/deploy/directory.war>
  Order allow,deny
  allow from all
  Options -Indexes
</Directory>
<Directory  /jboss/server/default/deploy/directory.war/WEB-INF>
  deny from all
</Directory>

Apache側でmod_rewriteを使用して、mod_jkによって返されるURLを変更したいと思います。

例えば:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^192.168.1.1$
RewriteRule /.* http://server.example/redirect.html [R=301,L]

現在、上記のコードはApacheによって返される画像にのみ影響し、mod_jkによって返されるページには影響しません。

これは可能ですか?それはどのように行われますか?

StackOverFlow で同様の質問がありますが、可能であれば、これをApacheの内部で処理し、Jboss構成を変更したくないという選択肢があります。

サーバーはOpenSuse11.1であり、モジュールの優先順位の問題があると思われますが、これを確認できませんでした。

URLの例は次のとおりです。

http://site.example/directory/index.jsp
http://site.example/foo/other.html

この例では、最初のURLは、上記の構成にリストされているディレクティブを使用してmod_jkにマウントされ、mod_rewriteによって再書き込みされません。 2番目のURLはApacheサイトの通常のディレクトリであり、正しく書き換えられます。

皆さんありがとう

3
Antitribu

長い検索の結果、私はこれに対する答えを見つけました。

Rewriteディレクティブは、.htaccess内または.htaccess内にない(仮想)ホストに対してグローバルに配置する必要があります。 mod_jkから提供されるファイルはその構造の一部ではないため、Apacheは実際にはこれらのファイルを解析していないようです。あなたがそれについて考えるならば、それは理にかなっています。ただし、ホスト全体に適用されるmod_rewriteルールが適用されます。

2
Antitribu

申し訳ありませんがコメントできません。ここで新しいです... mod_jkから返されるURLの例を教えてください。正規表現が返されたページに適合しないようです。

すべてを http://server.example/redirect.html にリダイレクトしてみてください:

RewriteRule .* http://server.example/redirect.html [R=301,L]

これがうまくいけば、それはあなたを悩ます正規表現です。

少し説明させてください。

次のようなURIがあります: http://foo.bar.com/anything

あなたの正規表現(/.*)は現在、スラッシュとそれに続く何かを検索しています。しかし、ウリでは、「何でも」に/はありません。

画像がある場合:例:.

http://foo.bar.com/images/image.png images/image.pngに/があり、正規表現が一致してリダイレクトを行うよりも。

あるサイトを別のサーバーにリダイレクトする場合:

http://foo.bar.com/somesite -> http://bar.foo.com 使用

RewriteRule somesite.* http://server.example/redirect.html [R=301,L]
1
evildead

申し訳ありませんが、コメントすることはできませんが、Antitribuの回答に応じて、書き換えステートメントを<Location>コンテキストに配置することもできます。素敵なものがあります <File>、<Location> 、. htaccessなどをいつ使用するかを説明するApacheマニュアルのセクション

0
pra