I'm trying to set up a subdomain-to-repository translation in Apache. Example:
foobars.domain.com -> /server/svnrepos/foobars
I've tried to get this done with mod_rewrite:
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.domain\.com$ [NC]
RewriteRule ^/svn(.*) /svn/%2$1 [PT]
However, this causes problems with basic svn operations; 'checkout' causes this pretty thing:
$ svn co http://foobars.domain.com/svn
svn: '/svn/foobars/!svn/vcc/default' path not found
I don't have any limitations in terms of server setup (my machines, os, etc). Is there any way to get this translation handled by Apache? I've looked at mass virtual hosts, but I don't see a way to extend the concept to DAV locations (I wish there was a VirtualSvnPath...). The way mod_dav_svn forces you to either 1) explicitly define your svn repo path, or 2) define the parent, is very limited.
Perhaps the 'SVNSpecialURI' can be of some use, although I can't find any documentation on it...
Assuming that my ultimate goal is to map a subdomain to an SVNPath, what are my options?
My current conf as a reference:
<VirtualHost *:80 *:443>
ServerAdmin admin@domain.com
DocumentRoot "/server/www"
ServerName domain.com
ServerAlias *.domain.com www.domain.com domain.com
ErrorLog logs/domain-error_log
CustomLog logs/domain-access_log common
DirectorySlash Off
RewriteLogLevel 9
RewriteLog /server/log/apache-rewrite.log
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.domain\.com$ [NC]
RewriteRule ^/svn$ /svn/ [QSA]
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.domain\.com$ [NC]
RewriteRule ^/svn(.*) /svn/%2$1 [PT]
<Location /svn>
DAV svn
SVNParentPath /server/svn
</Location>