2

我正在尝试通过多个 URL 访问我们的 Subversion 存储库。为此,我正在考虑使用 LocationMatch 指令。我的配置是:

<Location ~ "/(svn|repository)">
  DAV svn
  SVNPath /opt/svn
  AuthzSVNAccessFile /etc/subversion/access
</Location>

上述配置不起作用。奇怪的是,如果我使用例如这个配置,它适用于两个 URL:

<Location ~ "/(svn|repository)">
  SetHandler server-status
</Location>

对我来说,看起来 DAV svn 和 LocationMatch 的组合并没有真正起作用,还是我在这里做错了什么?

4

4 回答 4

1

我也遇到了问题,因为我想使用正则表达式来避免其他子路径被我的匹配捕获。

例如

<LocationMatch "^/test/.*$>

不一样

<Location "/test">

与后者一样,http://site.com/newproduct/test会被最后一个捕获,但不会被第一个捕获。http://site.com/test/scripts也是如此。这就是 LocationMatch 存在的原因,但是每当我输入正则表达式时它都会失败。如果我使用 LocationMatch 没有任何正则表达式,它似乎可以工作。

于 2011-03-01T20:50:10.247 回答
1

问题似乎是,当您在LocationorLocationMatch部分中使用正则表达式时,Apache 服务器正在使用正则表达式的内容重写请求中的一些元数据(可能是为了让接受此请求的处理程序将其作为正则表达式的目标)表达)。

当 dav_svn 处理程序收到请求时,它会查阅此元数据以解析获取所请求资源所需的路径。因为正则表达式不是真正的路径,所以会出现如下错误:

svn: PROPFIND of '%5E/(svn%7Crepository)/!svn/vcc/default': Could not parse response status line

我对此没有任何修复,除了不使用带有 dav_svn 的正则表达式:在我的情况下,我想使用 XSLT 格式化程序在使用 Web 浏览器访问 subversion 存储库时为它显示一个漂亮的 UI,并且 XSL 资源是应该在托管颠覆存储库的同一主机名上的不同路径上访问,所以我想使用正则表达式Location来使 XSL 资源的路径不会命中 dav_svn 处理程序。这是一个失败,所以我只是在不同的主机名上部署了 websvn,就是这样。

于 2011-11-02T13:56:15.367 回答
0

快速有效的解决方案:只需添加您对每个虚拟主机的引用,您想让 svn repro 可访问。

于 2013-06-20T13:03:19.440 回答
0

客户端是否收到错误,HTTP 错误日志中是否有错误?

将多个位置映射到单个 SVN 存储库时,SVN 可能会感到困惑。请参阅http://subversion.apache.org/faq.html#http-301-error。我现在正在解决另一个问题。

如果删除正则表达式是否有效?我会假设是的,但我想验证一下。

<Location "/svn">
于 2010-05-04T16:55:48.183 回答