如何在 apache 反向代理下的两种情况下反向

How to reverse on two conditions under an apache reverse proxy

我是 apache 反向代理的新手,我正在尝试反向调用 Url,如下所示:

我可以像这样转发 Webserver1 上的所有请求:

 <VirtualHost *:80>  

 ProxyPreserveHost On  
 ServerName localhost  
 ProxyPass / http://webserver1/  
 ProxyPassReverse / http://webserver1/  
 </VirtualHost>  

但我无法在 Url 参数示例上设置条件:

If "http://reverse.proxy.com/?param=foo" 然后转发到 WebServer 2

而且,我不知道这些规则是否可以在相同的配置上。

非常感谢您的帮助

你应该尝试一次..

<虚拟主机 *:80>
服务器名称本地主机
重写引擎开启 ProxyPass / http://webserver1/
ProxyPassReverse / http://webserver1/ RewriteRule "^/foo.html$" "bar.html" [R]

最后,我找到了这样做的解决方案。

<VirtualHost *:80>

ProxyPreserveHost On
ServerName localhost

RewriteEngine on
logLevel warn rewrite:trace3

RewriteCond %{REQUEST_URI} ^/ [NC]
RewriteCond %{QUERY_STRING} ^param=(.*)
RewriteRule (.*) http://Webserver2/?param=%1? [P]

ProxyPassMatch / http://Webserver1
ProxyPassReverse / http://Webserver1

</VirtualHost>

看起来工作正常