我有一台Debian 8
服务器,上面subversion
有Apache 2.4.10
服务器正在运行。由于公司防火墙的限制,
我最近想使用 subversion 来工作。WebDav
为了使整个过程正常工作,我使用了mod_dav_svn
身份Basic
验证和authz
访问文件。
设置部分有效,因为我能够在浏览器中查看存储库列表并深入研究存储库(我甚至可以在浏览器中查看单个文件),因此权限应该设置正确。
我尝试了各种不同的配置选项(似乎很多人都遇到了这个405 not allowed
问题)。
为了测试,我不仅使用了svn
客户端,还使用了cadaver
客户端,结果得到了相同的405
响应。
这是我的服务器使用的相应配置,要查看我尝试的内容,请查看此帖子底部的列表:
<Directory /svn>
Options -Indexes -ExecCGI -Includes -MultiViews +FollowSymlinks
DirectoryIndex disabled
Require all granted
#DAV on
#DavDepthInfinity on
</Directory>
<Location /svn/>
Options -Indexes -ExecCGI -Includes -MultiViews +FollowSymlinks
RewriteEngine off
DirectoryIndex disabled
#Dav on
#DavDepthInfinity on
DAV svn
SVNListParentPath on
SVNParentPath /svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /svn/passwd
AuthzSVNAccessFile /svn/authz
SSLRequireSSL
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
只是为了澄清一下:
我能够通过 提取和提交svn+ssh:
,存储库位于具有必要权限的/svn
组下(apache 用户是该组的成员)。 该文件指定所有人(所有地方)的读取访问权限和特定组的写入访问权限(我不知道是否有必要发布它,因为它的设置最少,请告诉我)。svn
authz
我尝试过的事情列表(我没有任何提出此建议的帖子的链接,但几乎所有内容都来自谷歌):
- 设置
Location
为/svn/
而不是/svn
- 添加
<Limit PROPFIND> require all granted </Limit>
- 设置
DavDepthInfinity on
,因为默认情况下禁用 - 添加
<Directory /svn>
- 禁用该目录和位置的索引文件
- 设置
require all granted
- 环境
RewriteEngine off
好吧,我尝试过的东西是随机的,正如我所说的,我从谷歌的各种线程中获取了它们。
我希望我能够很好地描述我的问题。
任何关于如何解决这个问题的提示都非常感谢!
答案1
嗯,这有点奇怪(至少在我看来)。
我之前尝试使用以下命令进行检查:
svn co https://my-domain.com/svn/repo
这产生了405
响应。
我刚刚尝试使用以下行:
svn co https://www.my-domain.com/svn/repo
现在它运行得很好。
似乎这个话题不太有趣,但我真的很感激有人能给我一些关于为什么www
需要它的见解。