2

次の形式の URL/URL でアクセスできる Web リソースがあります。

http://[host1]:[port1]/aaa/bbb.ccc?param1=xxx&param2=yyy...

ただし、次のような URL でリソースにアクセスしようとしている外部の (つまり、私たちが開発したものではないため、私たちの管理下にない、つまり変更できない) クライアント アプリを使用しています。

http://[host2]/[port2]/ddd/fff/param1=xxx&param2=yyy...

?param1=xxx&param2=yyy...つまり、クライアントは、適切なクエリ文字列としてではなく、URI の一部であるかのように「クエリ文字列」(その部分) を含めています。

別の Apache プロキシ インスタンスがあり、それを RewriteCond/RewriteRule と一緒に使用して、着信要求 ("URI" の末尾にクエリ文字列があり、"?" がないもの) を取得できると考えています。 ) URI を「適切な」クエリ文字列で「適切な」URI に書き換えてから、その変更/書き換えられた URI を使用して、プロキシ経由でリソースにアクセスします。

また、HTTP リダイレクト (例: 30x) をクライアントに戻さないようにしたいと考えています。

私はさまざまなことを試してきましたが、Apache mod_rewrite にはあまり詳しくないので、(1) これが可能かどうか、(2) RewriteCond/RewriteRule がこれを達成する方法を提案してくれる人がいるかどうか疑問に思っていました。

PS私はいくつかの進歩を得ました。以下は URL を正しく書き換えますが、テストすると、Apache が書き換えられた URL にすぐにプロキシするのではなく、書き換えられた URL への 302 リダイレクトが表示されます。リダイレクトなしでこれを行うことは可能ですか (302)?

<Location /test/users/>
RewriteEngine           on
RewriteCond             %{REQUEST_URI} ^/(.*)/param1=
RewriteRule             ^/(.*)/param1=(.*) http://192.168.0.xxx:yyyy/aaa/bbbbb.ccc?base=param1=$2
</Location>

ありがとう、ジム

4

0 に答える 0