如何授予对 SVN 服务器上“/.well-known”目录的访问权限(Apache 2.2)

如何授予对 SVN 服务器上“/.well-known”目录的访问权限(Apache 2.2)

我不知道如何禁用.well-known目录的身份验证。

当我删除 SVN 特定指令(DAV、SVNPath、AuthzSVNAccessFile)时,一切都按预期运行。

<VirtualHost *:443>
  ServerName www.example.com
  DocumentRoot "C:/www.example.com"
  ServerAdmin [email protected]

  SSLEngine On
  SSLCertificateFile "C:/Apache2/conf/ssl/www.example.com.crt"
  SSLCertificateKeyFile "C:/Apache2/conf/ssl/www.example.com.key"

  <Location />
    DAV svn
    SVNPath "C:/svnrepo"
    SSLRequireSSL 

    AuthName "www.example.com"
    AuthType Basic
    AuthUserFile "conf/svn/svn-users.txt"
    AuthGroupFile "conf/svn/svn-groups.txt"
    AuthzSVNAccessFile "conf/svn/svn-access.txt"

    Require valid-user
  </Location> 

  <Location "/.well-known">    
    Satisfy Any
    Allow from all
    Require all granted
    # Apache 2.4 only
    #AuthType None
  </Location>
</VirtualHost>

编辑:如果我没有重叠路径,它也会起作用。例如使用/svn/.well-known。不幸的是,这不是我现在可以轻松更改的事情。

答案1

您可以检查 apacheDirectory选项。下面是一个配置示例:

    <Directory /home/html/.well-known/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>

答案2

.htaccess在您的 webroot 中,创建一个包含以下内容的文件:

Options +Indexes

<IfModule mod_rewrite.c>
    RewriteRule "/\.|^\.(?!well-known/)" - [F]
</IfModule>

您需要启用 ModRewrite 才能使其正常工作。

答案3

仅供参考:我最终决定咬紧牙关,将我的 svn 仓库的路径更改为https://svn.domain.com/repo(而不是使用根)。

在经历了各种系统和框架的诸多复杂情况之后,我决定对所有托管应用程序都遵循这种模式,即始终使用

  • 子域名
  • 应用程序上下文路径

例如https://subdomain.domain.com/context

这使得将来引入负载平衡、同一域下的多个应用程序、同一服务器上的多个应用程序等的所有选项都保持开放。并且配置通常可以工作,因为不会有任何重叠的路径。

当然,在所有客户端中切换 svn repo 路径是很痛苦的。

相关内容