我正在尝试在我的apache服务器上托管多个网站(运行在tomcat服务器上的app.diff1.com和app.diff2.com),它们分别在端口8082和8083上运行,以便访问它们我想使用单个域名(app.in.xxx.com/ 差异)和区分符号(diff1 / diff2)。我使用url重写分别更改域名。现在,当我尝试访问网站时,我总是最终打到第一个虚拟主机。 如果我没有正确接近解决方案,请建议我。
代码段:
在httpd.conf文件中。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^app\.in\.xxx\.com/([a-z]*)$
RewriteRule ^ http://www.app.%1.com [L,R=301]
</IfModule>
<IfModule mod_proxy.c>
ProxyRequests off
</IfModule>
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.app.diff1.com
ProxyPass / http://www.app.diff1.com:8082/
ProxyPassReverse / http://www.app.diff1.com:8082/
</VirtualHost>
<VirtualHost *:80>
ServerName www.app.diff2.com
ProxyPass / http://www.app.diff2.com:8083/
ProxyPassReverse / http://www.app.diff2.com:8083/
</VirtualHost>
答案 0 :(得分:0)
将您的重写移动到第一个列出的虚拟主机中,并停止尝试捕获URL的第一个路径组件,就好像它是HTTP_HOST的一部分 - 在RewriteRule中捕获它并使用$ 1.
另请参阅ServerPath,这是一种执行相同映射的深奥方法。