开发者

Apache mod_rewrite/mod_proxy - re-write last part of URI as query string?

开发者 https://www.devze.com 2023-03-16 00:16 出处:网络
We have a web resource that can be accessed with a URL/URL of the form: http://[host1]:[port1]/aaa/bbb.ccc?param1=xxx&param2=yyy...

We have a web resource that can be accessed with a URL/URL of the form:

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

However, we are working with an external (i.e., not developed by us, so not under our control, i.e., we can't change it) client app that is attempting to access our resource with a URL that looks like:

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

In other words, the client is includi开发者_JAVA技巧ng the "query string" (the ?param1=xxx&param2=yyy... part) as if it's part of the URI, instead of as a proper query string.

We have a separate Apache proxy instance, and we're thinking that we could use that with some RewriteCond/RewriteRule to take the incoming requests (the ones with the query string at the end of the "URI", and without the "?") and rewrite the URI to a "proper" URI with a "proper" query string and then use that modified/re-written URI to access our resource via proxy.

We'd also like to do that without having an HTTP re-direct (e.g., 30x) going back to the client, because it appears that they may not be able to handle such a re-direct.

I've been trying various things, but I'm not that familiar with Apache mod_rewrite, so I was wondering if someone could tell me (1) if this is possible and (2) suggest what RewriteCond/RewriteRule would accomplish this?

P.S. I have gotten some progress. The following re-writes the URL correctly, but when I test, I'm seeing a 302 redirect to the re-written URL, instead of Apache just proxying immediately to the re-written URL. Is it possible to do this without the re-direct (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>

Thanks, Jim

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号