带有 SVN + HTML 的 VirtualHost

带有 SVN + HTML 的 VirtualHost

我们在 下提供了一个 SVN 存储库svn.example.org。现在我们想为该域添加 Let's Encrypt 证书 - 但是现在有一个问题。Let's Encrypt 通过将文件放入该虚拟主机的子文件夹(例如/.well-known/acme-challenge/…)来验证域。Let's Encrypt 无法验证该文件,因为 Apache 正在为 下的 SVN 存储库提供服务svn.example.org

现在的问题是,是否可以配置 Apache,以便某些 URL 不由 SVN 存储库提供服务?目前,vhost 配置类似于以下内容:

DocumentRoot /var/www/vhosts/svn.example.org/
<Location />
    DAV svn
    SVNParentPath /var/www/vhosts/svn.example.org/httpdocs/
    AuthType Basic
    AuthName "SVN"
    AuthUserFile /auth/svn.passwd
    Require valid-user
</Location>

我不确定我必须做什么,以便svn.example.org/.well-known/…Apache 能够以不同的方式提供请求。

答案1

我知道这应该是一条评论,但我的声誉还不够(目前)。您是否配置了其他网页?如果是,一个简单的Alias /.well-known/acme-challenge/ /path/to/your/challenge/directory操作就可以了。

答案2

更新:这实际上不起作用,请参阅下面的评论。


现在就可以工作了,结合@Stephan的评论和RegEx,排除.well-knownSVN的路径(https://regex101.com/r/h8kDEc/1):

DocumentRoot /var/www/vhosts/svn.example.org/
Alias /.well-known/ /var/www/vhosts/svn.example.org/httpdocs/.well-known/
<LocationMatch ^/(?!\.well-known).*>
    DAV svn
    SVNParentPath /var/www/vhosts/svn.example.org/httpdocs/
    AuthType Basic
    AuthName "SVN"
    AuthUserFile /auth/svn.passwd
    Require valid-user
</LocationMatch>

相关内容