Apache-Httpd

Apache, svn 位於域的根目錄,但有一個例外

  • August 17, 2016

我想以 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>

引用自:https://unix.stackexchange.com/questions/109503