mod_rewriteredirect到不同的虚拟主机

我想要redirect到的主机名如下所示:

<VirtualHost *:80> ServerName my.dav.hostname.com ErrorLog /var/log/open-xchange/dav-err.log TransferLog /var/log/open-xchange/dav-access.log <Proxy /> Order allow,deny Allow from all </Proxy> ProxyPass / ajp://localhost:8009/servlet/dav/ smax=0 ttl=60 retry=5 </VirtualHost> 

我想做一些事情,如果有人去了一个URL my.hostname.com/dav,我希望它被重写到my.dav.hostname.com ..如果客户端转到/dav以外的URL,他应该被redirect。

 <VirtualHost *:80> ServerName my.hostname.com ErrorLog /var/log/open-xchange/dav-err.log TransferLog /var/log/open-xchange/dav-access.log .. .. </VirtualHost> 

我对如何继续下去毫无头绪。

像这样的东西不起作用:

 RewriteEngine on RewriteRule /servlet/webdav.infostore http://my.dav.hostname.com [L,NE,QSA] 

因为它实际上redirect到我不想要的my.dav.hostname.com。 我想要的是为Apache透明地为我做。

这应该工作:

 RewriteEngine On RewriteCond %{HTTP_HOST} !^my.dav.domain.com [NC] RewriteRule ^/dav/(.*)$ http://my.dav.domain.com/$1 [R=301,NC] 

我个人不会使用你的子域结构。 通过subdomain.dav.domain.com使用dav.subdomain.domain.com更好。

如果你希望apache能够做到这一点(即浏览器中的URL不能改变),你可以简单地将你的DAV servlet安装在另一台服务器上:

 ProxyPass /dav/ ajp://localhost:8009/servlet/dav/ smax=0 ttl=60 retry=5