У нас есть веб-ресурс, доступ к которому можно получить по URL / URL-адресу в форме:
http://[host1]:[port1]/aaa/bbb.ccc?param1=xxx¶m2=yyy...
Однако мы работаем с внешним (т.е. не разработанныммы, поэтому не под нашим контролем, т.е. мы не можем его изменить) клиентское приложение, которое пытается получить доступ к нашему ресурсу с помощью URL-адреса, который выглядит следующим образом:
http://[host2]/[port2]/ddd/fff/param1=xxx¶m2=yyy...
В другихсловами, клиент включает «строку запроса» (часть ?param1=xxx¶m2=yyy...
), как если бы она была частью URI, а не как правильная строка запроса.
У нас есть отдельный экземпляр прокси-сервера Apache, и мыВы думаете, что мы могли бы использовать это с некоторыми RewriteCond / RewriteRule, чтобы принимать входящие запросы (запросы со строкой запроса в конце «URI» и без «?») и переписывать URI в «правильный»URI с «правильной» строкой запроса, а затем использовать этот измененный / переписанный URI для доступа к нашему ресурсу через прокси.
Мы также хотели бы сделать это без переадресации HTTP (например, 30x) возвращаясь к клиенту, потому что кажется, что они могутя не могу справиться с таким перенаправлением.
Я пробовал разные вещи, но я не очень хорошо знаком с Apache mod_rewrite, поэтому мне было интересно, если кто-нибудь скажет мне (1), если этовозможно и (2) предложить, что RewriteCond / RewriteRule достиг бы этого?
PS Я получил некоторый прогресс.Следующий код корректно переписывает URL-адрес, но когда я тестирую, я вижу перенаправление 302 на перезаписанный URL-адрес, вместо того, чтобы Apache просто проксирует сразу на перезаписанный URL-адрес.Можно ли сделать это без перенаправления (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>
Спасибо, Джим