从虚拟主机代理通行证中排除别名

我已经遵循虚拟主机configuration。 预期的结果是:

  1. 如果有人请求http://test.myserver.com/myapp,Apache会从/ var / www / myapp提供服务
  2. 如果请求http://test.myserver.com/,apache会将其redirect到端口8069。

第二是工作,但第一不是。 有人可以帮忙吗?

<VirtualHost *:80> ServerName test.myserver.com Alias /myapp /var/www/myapp <Directory /var/www/myapp> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny Allow from all </Directory> ProxyPass / http://localhost:8069/ ProxyPassReverse / http://localhost:8069/ </VirtualHost> 

Solutions Collecting From Web of "从虚拟主机代理通行证中排除别名"

这就是我如何达到预期的结果。 以下是ProxyPassMatch ^/myapp !的工作配置ProxyPassMatch ^/myapp ! 做了窍门,除了(服务器地址)/ myapp,所有的请求被代理到其他服务器,这是open-erp运行在端口8069:

 <VirtualHost *:80> serverName test.myserver.com Alias /myapp /var/www/myapp <Directory /var/www/myapp> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny Allow from all </Directory> ProxyPassMatch ^/myapp ! ProxyPass / http://localhost:8069/ ProxyPassReverse / http://localhost:8069/ CustomLog /var/log/apache2/access.log common ErrorLog /var/log/apache2/error.log </VirtualHost> 

而不是使用: ProxyPassMatch ^/myapp ! 您可以在定义/之前添加另一个ProxyPass指令,如下所示:

 ProxyPass /myapp ! ProxyPass / http://localhost:8069/ 

由于ProxyPass尊重优先权(第一个匹配将被处理),它将正确地重定向到目录而不是代理。