我已从具有Windows身份验证(基本)功能的Apache 2.2托管的Subversion存储库迁移到VisualSVN(带有Apache 2.4的v3.9.2)。 这是一个新设置,无需升级,导入存储库后,我可以签出,更新和提交。 另外,可以使用浏览器访问Web界面(要求输入名称和密码)。
现在,我想将pdf文件排除在身份验证之外,以便任何知道正确URL的人都可以使用浏览器查看它们。
在旧设置中,我添加了以下位置部分:
<LocationMatch ^.+\.[pP][dD][fF](\?[pr]=\d+)*$>
AuthType None
Allow from all
Satisfy Any
Require all granted
</LocationMatch>
删除Allow.../Satisfy...
指令(因为不再受支持)使我可以启动服务器,但是在访问pdf文件时会给出500错误代码。
如果我只有Require all granted
指令,它仍然会要求输入名称和密码。
经过研究,并与自动生成的httpd.conf进行了比较,我添加了一些选项并尝试了它们的不同组合,但是没有一个起作用:
<LocationMatch "^.+\.[pP][dD][fF]\/?(\?[pr]=\d+)?$">
AuthType None
AuthMerging Or
SVNPathAuthz off
AuthzVisualSVNAuthoritative off
SVNOverrideAll on
Require all granted
</LocationMatch>
如果我将浏览器导航到存储库中的文件夹并输入凭据,然后才导航到它可以工作的pdf文件。仅在未经事先身份验证的情况下打开pdf文件的链接时,才会出现服务器错误。 在服务器上,事件日志显示以下错误消息:
AH00027: No authentication done but request not allowed without authentication for /svn/Test/trunk/test.pdf. Authentication not configured?
[client 10.1.1.254]
随着apache服务器日志级别的提高,我通过pdf访问获得了以下信息:
AH01626: authorization result of Require valid-user : denied (no authenticated user yet)
AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
AH01626: authorization result of Require all granted: granted
AH01626: authorization result of <RequireAny>: granted
AH01626: authorization result of AuthMerging Any: granted
因此,似乎Apache授予了访问权限,但VisualSVN仍然需要身份验证。
有人做过类似的事情并找到了解决方案吗?
答案 0 :(得分:0)
VisualSVN Server现在不支持匿名访问。必须对用户进行身份验证并授权才能查看存储库内容。而且,您不应修改服务器的httpd.conf或httpd-custom.conf文件以启用匿名访问-这可能会导致意外行为。
考虑调整另一个选项,而不是调整VisualSVN Server的配置。编写一个脚本,该脚本将从存储库中获取所需的PDF文件,并使它们通过不需要身份验证的其他HTTP服务器供用户使用。这可以是提交后的脚本,也可以是轮询存储库并在有更改的情况下下载文件的脚本。