我已经在我的家庭服务器上设置了 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>