Apache-Httpd
Apache, svn 位於域的根目錄,但有一個例外
我想以 svn.domain.com/ 直接列出 SVN 儲存庫的方式設置 SVN。為了使 web 視圖更好,我使用了 SVNIndexXSLT。但是我必須以某種方式將此文件提供給最終使用者。
所以我想設置一個位置(
/repos-web
例如)來提供文件,而不是 svn。我目前有以下配置:
<VirtualHost *:80> ServerName svn.domain.com DocumentRoot /home/user/svn/svnweb ErrorLog ${APACHE_LOG_DIR}/error.log <Location /> AuthType Basic AuthName "Authentication required" AuthUserFile "myauthfile" Require valid-user order allow,deny allow from all DAV svn SVNParentPath /home/user/svn/repositories SVNListParentPath on SVNIndexXSLT "/repos-web/view/repos.xsl" </Location> <Location /repos-web> DAV off </Location> </VirtualHost>
但是http://svn.domain.com/repos-web只是返回:
無法打開請求的 SVN 文件系統
我嘗試改變
<Location />
in<LocationMatch "^/(?!repos-web)">
但這根本沒有幫助。當然,一種解決方案是在另一個域/子域上提供 xslt 文件,但這更像是一種解決方法而不是解決方案。
主要問題是您無法關閉子文件夾的 Dav。所以這就是為什麼大多數人為像 /svn 這樣的子位置啟用 Dav。
另一方面,如果您使用重寫規則並重定向到具有 xsl 文件的另一個域,它可能會起作用。您需要在該其他域上設置 Access-Control-Allow-Origin 標頭,以說明原始域正常。就像是:
<Location /> Header append Access-Control-Allow-Origin http://www.example.com </Location>
您在主域上的重寫規則如下所示:
<Location /repos-web> RewriteEngine On RewriteRule .*$ http://repos.example.com%{REQUEST_URI} [last,redirect] </Location>