Apache 位置匹配和DAV svn

Apache 位置匹配和DAV svn,apache,svn,apache2,webdav,mod-dav-svn,Apache,Svn,Apache2,Webdav,Mod Dav Svn,我试图通过多个URL访问Subversion存储库。为此,我考虑使用LocationMatch指令。我的配置是: <Location ~ "/(svn|repository)"> DAV svn SVNPath /opt/svn AuthzSVNAccessFile /etc/subversion/access </Location> DAV svn SVNPath/opt/svn authzsvnacessfile/etc/subve

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

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

DAV svn
SVNPath/opt/svn
authzsvnacessfile/etc/subversion/access
上述配置不起作用。奇怪的是,如果我使用这个配置,它对两个URL都很有效:

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

SetHandler服务器状态

对我来说,DAV svn和LocationMatch的组合似乎没有真正起作用,或者我在这里做错了什么?

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

如果将多个位置映射到单个SVN回购,SVN可能会感到困惑。看见我正在为另一个问题排除故障

删除正则表达式是否有效?我想是的,但我想核实一下

<Location "/svn">

我也有问题,因为我想使用正则表达式来避免其他子路径被我的对手抓住

e、 g


问题似乎是,当您在
位置
位置匹配
部分使用正则表达式时,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资源应该在托管subversion repo的同一主机名上的不同路径上访问,因此,我希望使用正则表达式
Location
使XSL资源的路径不会命中dav_svn处理程序。这是一个失败,所以我只是在不同的主机名上部署了WebVN,就是这样。

有效的快速解决方案:只需将您的引用添加到每个vhost,您就可以访问svn repro

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