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サイトの通常のディレクトリであり、正しく書き換えられます。
皆さんありがとう
長い検索の結果、私はこれに対する答えを見つけました。
Rewriteディレクティブは、.htaccess内または.htaccess内にない(仮想)ホストに対してグローバルに配置する必要があります。 mod_jkから提供されるファイルはその構造の一部ではないため、Apacheは実際にはこれらのファイルを解析していないようです。あなたがそれについて考えるならば、それは理にかなっています。ただし、ホスト全体に適用されるmod_rewriteルールが適用されます。
申し訳ありませんがコメントできません。ここで新しいです... 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]
申し訳ありませんが、コメントすることはできませんが、Antitribuの回答に応じて、書き換えステートメントを<Location>
コンテキストに配置することもできます。素敵なものがあります <File>、<Location> 、. htaccessなどをいつ使用するかを説明するApacheマニュアルのセクション 。