SVN和ViewVC的URL相同

时间:2016-07-18 19:57:00

标签: apache mod-rewrite svn viewvc

我在Apache2服务器上有SVN和ViewVC工具,并且想知道是否有办法使它如果你从Web浏览器访问一个URL它会带你到ViewVC,但如果你访问相同的URL比方说,TortoiseSVN然后它正确地检查等。

例如,如果我打开https://website.com/svn/repo1,它会将我带到ViewVC工具,但如果我使用TortoiseSVN访问相同的URL,那么我将能够执行提交,检出等,没有任何问题。< / p>

或者它是不可能的,因为它无法区分请求的类型?

由于

2 个答案:

答案 0 :(得分:2)

从一般意义上讲,由于Subversion使用GET请求作为其HTTP(s)网络协议的一部分,因此Apache区分针对Subversion的请求和针对ViewVC程序的请求将具有相当大的挑战性。现在,事实证明,Subversion客户端通常仅针对存储库文件的URL而不是目录发出GET请求。所以,从理论上讲,如果你可以配置Apache来专门处理https://website.com/svn/repo1/(一个目录)的GET(和GET),也许可以将它重定向到ViewVC 真正所在的另一个URL,那么至少顶级目录可以两种方式使用。但我自己还没有处方或任何现有技术知识来证明这一理论。

答案 1 :(得分:0)

我能够通过在Apache配置文件中添加以下内容来解决这个问题:

RewriteCond %{HTTP_USER_AGENT} (?:Chrome|Firefox|Safari|Edge)
RewriteCond %{REQUEST_URI} ^/svn/
RewriteRule "^/svn(.*)$" "/usr/local/viewvc-1.1.24/bin/cgi/viewvc.cgi$1" [H=cgi-script,L]

它检查HTTP用户代理是否来自浏览器(我现在只放4个浏览器),如果URL以“/ svn”开头,那么它将占用路径的其余部分并将其重定向到.cgi脚本ViewVC所在的位置,否则mod_dav_svn处理请求。到目前为止工作良好,并没有看到任何性能影响。