Git .htaccess在使用ScriptAliasMatch时被忽略

Git .htaccess在使用ScriptAliasMatch时被忽略,git,apache,.htaccess,apache-config,Git,Apache,.htaccess,Apache Config,我想准备一些通过http/https提供的GIT存储库。我到处阅读,了解了一些知识,我遵循了教程,并设法使一切正常。我可以克隆提供htpasswd文件中指定的基本信息的存储库(现在假设user1和user2),并将更改推回 我的回购协议在/var/www/git中,gitweb也是如此 etc/httpd/conf.d/git.conf: SetEnv GIT_PROJECT_ROOT /var/www/git SetEnv GIT_HTTP_EXPORT_ALL ScriptAliasMat

我想准备一些通过http/https提供的GIT存储库。我到处阅读,了解了一些知识,我遵循了教程,并设法使一切正常。我可以克隆提供htpasswd文件中指定的基本信息的存储库(现在假设user1和user2),并将更改推回

我的回购协议在/var/www/git中,gitweb也是如此

etc/httpd/conf.d/git.conf

SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL

ScriptAliasMatch \
    "(?x)^/git/(.*/(HEAD | \
                    info/refs | \
                    objects/(info/[^/]+ | \
                             [0-9a-f]{2}/[0-9a-f]{38} | \
                             pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
                    git-(upload|receive)-pack))$" \
    /usr/libexec/git-core/git-http-backend/$1

ScriptAlias /git /var/www/git/gitweb.cgi

<Location /git>
    AuthType Basic
    AuthName "Basic Auth"
    AuthBasicProvider file ldap

    # LDAP
    AuthzLdapAuthoritative Off
    AuthLDAPURL "ldap://[...]/CN=Users,DC=ad,DC=example,DC=com?sAMAccountName"
    AuthLDAPBindDN "CN=Administrator,CN=Users,DC=ad,DC=example,DC=com"
    AuthLDAPBindPassword Password11

    # FILE 
    AuthUserFile /var/www/htpasswd
    AuthGroupFile /var/www/git.groups
    Require valid-user
</Location>
问题是,我正在尝试设置基于存储库的授权,我只希望一组用户能够访问每个存储库。我发现使用.htaccess文件将是完美的解决方案(无需重新启动服务器),因此我在存储库的目录/var/www/git/gitrepo中放置了一个简单的.htaccess:

Require User test2
理论上,应该禁止使用test1克隆/推送更改,但它仍然有效。结果是.htaccess被忽略了,因为无论我在那里放了什么,只要经过身份验证,我都可以克隆存储库

我认为ScriptAliasMatch可能有问题,可能所有的处理都转到git-http-backend-exec,而不是回到Apache,因为它重定向了所有的流量?我是Apache的新手,所以这可能是一个简单的故事,但请-帮助!:)

更新1:是的,AllowOverride在/var/www/git的主配置中设置为“全部”:

<Directory "/var/www/git">
    AllowOverride All
</Directory>

允许超越所有

您的/var/www/git目录在正常的Web文档树之外。 这是一件好事,但这意味着只有GitHTTP后端可以 实际访问此目录,而不是web服务器,如any.htaccess 无法读取文件

您或者需要在服务器配置区域中进行身份验证,以便 验证URL,或作为git http后端程序所在的包装


在一台服务器上有多个GIT存储库是可能的,但很少有文档详细说明如何做到这一点。

我想知道这里是否有什么可以做的(我想我会加入邮件列表),但我只想说我切换到Gitolite,它工作起来很有魅力:)
<Directory "/var/www/git">
    AllowOverride All
</Directory>