Имя хоста, на которое я хочу перенаправить, выглядит так:
<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 .. Если клиент переходит на URL-адрес, отличный от /dav
, ему следует не быть перенаправленным.
<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]
Поскольку он фактически перенаправляет на my.dav.hostname.com, что мне не нужно. Я хочу, чтобы apache прозрачно делал это за меня.
Если вы хотите, чтобы apache делал это прозрачно (т.е. URL-адрес в браузере не должен изменяться), вы можете просто смонтировать свой сервлет DAV на другом сервере:
ProxyPass /dav/ ajp://localhost:8009/servlet/dav/ smax=0 ttl=60 retry=5
Это должно работать:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^my.dav.domain.com [NC]
RewriteRule ^/dav/(.*)$ http://my.dav.domain.com/$1 [R=301,NC]
Лично я бы не стал использовать вашу структуру поддоменов. Лучше использовать dav.subdomain.domain.com
над subdomain.dav.domain.com
.