我想要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