我試圖在Apache中設置子域到存儲庫的轉換。例如:通過子域名(在Apache中)動態顛覆回購
foobars.domain.com -> /server/svnrepos/foobars
我試圖得到這個與mod_rewrite的完成:
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.domain\.com$ [NC]
RewriteRule ^/svn(.*) /svn/%2$1 [PT]
然而,這導致基本SVN操作方面的問題; 「結賬」導致此漂亮的東西:
$ svn co http://foobars.domain.com/svn
svn: '/svn/foobars/!svn/vcc/default' path not found
我沒有在服務器設置方面的任何限制(我的機器,操作系統等)。有沒有辦法讓Apache處理這個翻譯?我已經看過大規模虛擬主機,但我沒有看到將概念擴展到DAV位置的方法(我希望有一個VirtualSvnPath ...)。 mod_dav_svn的方式迫使你1)明確定義你的svn repo路徑,或者2)定義父級,是非常有限的。
也許「SVNSpecialURI」可以是一些使用的,但我找不到它的任何文件...
假設我的最終目標是一個子域映射到SVNPath,有什麼我的選擇?
我現在的conf作爲參考:
<VirtualHost *:80 *:443>
ServerAdmin [email protected]
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>