.htaccess 无法与 SVN 配合使用

.htaccess 无法与 SVN 配合使用

我已经在我的家庭服务器上设置了 SVN,我正在尝试让 htaccess 工作,这样我就可以使用密码保护保存我的所有代码的 /var/www/html/svn/repos 文件夹。

subversion.conf 文件如下所示:

<Location /repos>
   DAV svn
   SVNPath /var/www/html/svn/repos

   # Limit write permission to list of valid users.
   <LimitExcept GET PROPFIND OPTIONS REPORT>
      # Require SSL connection for password protection.
      # SSLRequireSSL

      AuthType Basic
      AuthBasicProvider file
      AuthName "Subversion repos"
      # AuthUserFile /etc/svn-auth-conf
      AuthUserFile /home/myname/passwordfile
      Require valid-user
   </LimitExcept>
</Location>

passwordfile 文件已就位,我已添加用户名和密码。我已通过在 html 目录 (/var/www/html/test/index.html) 中放置一个测试文件夹来确认其工作正常,我还添加了 .htaccess 文件,因此当我打开 apache 并尝试访问时http://IP_ADDRESS_OF_HOME_SERVER/test/index.html,系统会提示我输入用户名和密码。

由于某种原因,当我尝试访问时,系统没有提示我输入用户名和密码http://IP_ADDRESS_OF_HOME_SERVER/repos/

任何帮助均感激不尽。

答案1

当您像这样配置 SVN 访问时,URLhttp://IP_ADRESS_OF_HOME_SERVER/repos/指向一个虚拟文件夹。因此,Web 服务器将不知道在哪里查找此地址的 .htaccess 文件。

您已LimitExcept在配置中包含了,这会告诉 Apache 不要要求输入有效的用户名和密码来查看存储库。

因此,您必须像以前一样配置对存储库的访问权限,但有一个例外,您需要对所有请求进行配置,而不仅仅是写入。.htaccess 文件用于托管在您服务器上的文件,在本例中根本不使用,因为 SVN 路径是虚拟的

你的配置看起来应该像这样:

<Location /repos>
   DAV svn
   SVNPath /var/www/html/svn/repos

   # Require SSL connection for password protection.
   # SSLRequireSSL

   #Require all access to log in
   AuthType Basic
   AuthBasicProvider file
   AuthName "Subversion repos"
   # AuthUserFile /etc/svn-auth-conf
   AuthUserFile /home/myname/passwordfile
   Require valid-user
</Location>

答案2

Oyvind 走在正确的道路上,他只是错过了名称虚拟主机让 SVN 处理基于 ip 的请求并询问有效用户的指令。

以下是示例:(将 127.0.0.1 替换为您的 IP,将 80 替换为您的端口)

NameVirtualHost 127.0.0.1:80
<VirtualHost your.svnhost.tld:80>
    ServerName your.svnhost.tld
    <Location /repos>
    DAV svn
    SVNPath /your/svn/path
    AuthType Basic
    AuthUserFile /your/svn-auth-file
    Require valid-user
    </Location>
</VirtualHost>

相关内容