Apache dav_svn-svn co 产生“永久移动”

Apache dav_svn-svn co 产生“永久移动”

我有几个运行良好的 Subversion 存储库。我可以通过协议svn和进行签出svn+ssh

为了检查限制性防火墙后面的存储库,我想http(s)通过 Apache mod_dav_svn 启用访问。

可以通过浏览器访问存储库,但当我尝试检出存储库时,我得到了一个svn: Repository moved to 'url'。如果我尝试像这样检出:

svn co https://servername/repo

它告诉我它移动到了https://servername/repo/(注意结尾的斜杠),如果我尝试检查那个确切的网址,我会moved permanently再次得到,但该网址与我输入的网址相同。

这是用于存储库的 apache 配置:

<VirtualHost *:443>
ServerName servername
ServerAlias servername

SSLEngine On
SSLCertificateFile /etc/apache2/ssl/crt
SSLCertificateKeyFile /etc/apache2/ssl/key

DocumentRoot /svn

<Location />
Order allow,deny
Allow from all

DAV svn
SVNParentPath /svn
SVNListParentPath on
AuthType Basic
AuthName "SVN"
AuthUserFile /svn/users
#AuthzSVNAccessFile /svn/acl
<LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
</LimitExcept>
</Location>

有谁能给出正确的提示或推动吗?

答案1

SVN 书籍

确保在定义新位置时,它不会与其他导出的位置重叠。例如,如果您的主 DocumentRoot 导出到 /www,请不要在 中导出 Subversion 存储库 <Location /www/repos>。如果对 URI /www/repos/foo.c 的请求到来,Apache 将不知道是否要在 DocumentRoot 中查找文件 repos/foo.c,或者是否委托 mod_dav_svn 从 Subversion 存储库返回 foo.c。结果通常是服务器出现 301 Moved Permanently 形式的错误。

因此,我更喜欢绝不在 VHost 的根目录中有 SVN 位置,对我来说,DocumentRoot /svn+SVNParentPath /svn似乎是大忌

只是处于偏执模式(不能直接引用权威来源)我总是

  • SVN 位置作为网络树中更深的根节点
  • SVNParentPath 放置在 web-tree 之外
  • Location 和 SVNParentPath| SVNPath 参数中的尾部斜杠

相关内容