"svn:E195019:为URL检测到重定向周期"的原因是什么?

Chr*_*ies 12 svn websvn dav webdav apache2

试图从我的SVN回购结账给我

    svn: E195019: Redirect cycle detected for URL ...

但是,当我在某个(特定)代理服务器后面时,似乎只会出现此错误.

正如在其他帖子中所讨论的(参见towise svn给我"检测到URL'域/ svn'的重定向循环'"),如果SVN DAV配置错误,例如使用SVNParentPath,则应该使用SVNPath,则会发生此错误.但是,我的配置似乎是正确的 - 据我所知 - 问题只发生在代理后面.

存储库的设置或多或少是标准的,例如,

    ServerAlias  svn.mydomain.com
    <Location /myrepo>
        DAV svn
        SVNPath /var/www/vhosts/mydomain.com/svn/myrepo
        AuthType Basic
        AuthName "mydomain svn"
        AuthUserFile /var/www/vhosts/svn.mydomain.com/conf/htpasswd-myproject
        # Allow read-only access to anyone, otherwise require
        # require authentication
            Require valid-user
    </Location>

Chr*_*ies 13

(在使用半个周末搜索解决方案后,我回答了我自己的问题):

看起来好像这个错误消息与subversion存储库位于svn/myrepo目录svn也列为子域的DocumentRoot 的目录中有关svn.mydomain.com.那个DocumentRoot指令对我来说并不明显,因为子域的文档根在一个不同的conf文件中被混淆了(我使用Plesk来维护服务器).这造成了某种模糊性.一旦我将子域的文档根移动到其他位置,错误消息就消失了.

问题很难追查,因为 - 据我所知 -

  • 如果回购位于亚结构域,即,顶层没有出现错误<Location />SVNPath /var/www/vhosts/mydomain.com/svn在上述结构中.

  • 如果通过代理访问存储库,则仅显示错误.

  • 与DocumentRoot的冲突并不那么明显,因为它是一个子域.

总结一下:解决方案(使用Plesk时):将Plesk设置(GUI)中子域的"DocumentRoot"更改为SVN目录中的不同内容.www.mydomain.com的"DocumentRoot"是httpdocs.svn.mydomain.com的"DocumentRoot"是(默认情况下)svn.我改变了,httpdocs-svn问题就消失了.该文件夹httpdocs-svn未在我的设置中使用,因为svn.mydomain.com下面的所有内容都由DavSVN处理.


小智 11

确保您使用的链接是'svn'而不是'view'链接.

www.myrepo.com/svn/myproject/trunk ||正确
www.myrepo.com/view/myproject/trunk ||不正确

这应该工作.


md.*_*san 10

在本教程之后,我遇到了类似的错误: 如何在Ubuntu 18.04和16.04 LTS上安装SVN Server。后来意识到,我必须在步骤3中删除以下行

别名/ svn / var / lib / svn


小智 5

就我而言,问题是 ubuntu 上的配置文件之间存在不兼容的设置。

我有 ubuntu 18.04 和 Apache2 以及来自 ubuntu 的最新 svnserver,为了解决重定向问题,我不得不从两个不同的配置文件中删除别名:/etc/apache2/mods-enabled/dav_svn/etc/apache2/site-enabled/默认 ssl.conf

/etc/apache2/mods-enabled/dav_svn

 #Alias /svn /svn_repo/svn
 <Location /myrepo>
    DAV svn
    SVNPath /svn_repo/svn
    AuthType Basic
    AuthName "Subversion Repository"
    AuthUserFile /mypath/dav_svn.passwd
    Require valid-user
    AuthzSVNAccessFile /etc/apache2/dav_svn.authz
</Location>
Run Code Online (Sandbox Code Playgroud)

/etc/apache2/site-enabled/default-ssl.conf

 #Alias /svn /svn_repo/svn
 <Location /myrepo>
    DAV svn
    SVNPath /svn_repo/svn
    AuthType Basic
    AuthName "Subversion Repository"
    AuthUserFile /mypath/dav_svn.passwd
    Require valid-user
    AuthzSVNAccessFile /etc/apache2/dav_svn.authz
</Location>
Run Code Online (Sandbox Code Playgroud)

显然修改后我需要重新启动apache:

sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)