mod_rewrite para redirecionar para virtualhost diferente

1

O nome do host para o qual eu quero redirecionar parece:

<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>

Eu quero fazer algo como se alguém acessasse um URL my.hostname.com/dav, eu quero que ele seja reescrito para my.dav.hostname.com .. Se o cliente for para um URL diferente de /dav , ele deve não ser redirecionado.

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

Eu não tenho ideia de como devo proceder.

Algo assim não funciona:

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

Como ele realmente redireciona para my.dav.hostname.com, o que eu não quero. O que eu quero é que o apache faça isso de forma transparente para mim.

    
por Abhijeet Rastogi 04.06.2013 / 11:45

2 respostas

0

Isso deve funcionar:

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

Pessoalmente, eu não usaria sua estrutura de subdomínio. É melhor usar dav.subdomain.domain.com over subdomain.dav.domain.com .

    
por 04.06.2013 / 12:23
0

Se você quiser que o apache faça isso de forma transparente (ou seja, a URL no navegador não deve ser alterada), basta simplesmente montar seu servlet DAV no outro servidor também:

ProxyPass /dav/ ajp://localhost:8009/servlet/dav/ smax=0 ttl=60 retry=5
    
por 05.06.2013 / 11:35