将子文件夹dynamic地反向代理到Apache中的子域

我想dynamic代理子文件夹到另一个主机上的子域。 例如,我有以下反向代理设置为单个子文件夹到子域:

ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass /app1/ http://app1.myotherserver.tld/ ProxyPassReverse /app1/ http://app1.myotherserver.tld/ 

上述工作正常(除了尾随的“/”问题)。 但是,我需要添加另外10个,就像它,app2,app3,app4等…也许在未来更多。 添加每一个显然是没有意义的。

使用http://httpd.apache.org/docs/current/rewrite/proxy.html的页面作为参考,我这样做:

 RewriteRule ^/(.*)/$ http://$1.myotherserver.tld/ [P] RewriteRule ^/(.*)/(.*)$ http://$1.myotherserver.tld/$2 [P] ProxyPassReverse /$1/ http://$1.myotherserver.tld/ 

这样的作品,但我现有的子文件夹被拉入该规则,我仍然有问题的尾随“/”。

我尝试添加“?” 遵循第一条规则,但是这打破了一切:

 RewriteRule ^/(.*)?/$ http://$1.myotherserver.tld/ [P] 

我如何使“http; // www.mywebserver.tld / app2”这样的东西工作,但仍然允许这些有效的URL仍然工作?

 http://www.mywebserver.tld/style.css http://www.mywebserver.tld/images/title.png http://www.mywebserver.tld/existingsubfolder http://www.mywebserver.tld/existingsubfolder/page.php 

在代理之前,您需要使用重写条件来validation文件不存在。

另外,应该能够通过一条规则来获得所需的行为:

 RewriteCond /path/to/docroot%{REQUEST_URI} !-f RewriteCond /path/to/docroot%{REQUEST_URI} !-d RewriteRule ^/[^/]*/(.*)$ http://$1.myotherserver.tld/ [P] ProxyPassReverse /$1/ http://$1.myotherserver.tld/