Apache ProxyPass使用请求中的参数进行反向处理

我有一种情况,我想要将所有以/ app开头的内容redirect到内部服务器。 基本上这个想法是,Apache将作为一个反向代理进行以下转换:

http://external/app -> http://myserver:1082/myapp 

我可以使用Rewrite来完成,如下所示:

  RewriteCond %{REQUEST_URI} ^/app RewriteRule ^/app(.*)$ http://myserver:1082/myapp$1 [L,P] ProxyPassReverse /app http://myserver:1082/myapp 

它工作正常。 问题是,现在我要在URL上有一个语言preffix,但在应用程序上没有。 所以我需要以下redirect:

 http://external/app -> http://myserver:1082/myapp http://external/en/app -> http://myserver:1082/myapp http://external/pt/app -> http://myserver:1082/myapp 

虽然这可以通过重写来完成,但是我有一个proxyPassReverse的问题。 因为基本上我需要做一个dynamic的ProxyPassRever,根据用户的实际URL请求,改变位置

 ProxyPassReverse /en/app http://myserver:1082/myapp ProxyPassReverse /pt/app http://myserver:1082/myapp ProxyPassReverse /app http://myserver:1082/myapp 

这将是类似的东西

 ProxyPassReverse ${preffix}/app http://myserver:1082/myapp 

有没有可能做到这一点?

来自ProxyPathReverse :

在段中使用时,第一个参数被省略,本地目录从。

从地点 :

该url可能使用通配符。 在通配符中,? 匹配任何单个字符,*匹配任何字符序列。 扩展正则expression式也可以使用,加上〜字符。

所以你应该可以使用:

 <Location /[az]+/app> ProxyPathReverse http://myserver:1082/myapp </Location>