我有一种情况,我想要将所有以/ 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>