我有一个网站,我使用github(封闭源代码)来跟踪更改并更新网站。唯一的问题是,看起来.git目录可以通过网络访问。我怎么能阻止它并仍能使用git?
我应该使用.htaccess吗? 我应该更改.git的权限吗?
答案 0 :(得分:337)
将其放在网络服务器 root 的.htaccess
文件中:
RedirectMatch 404 /\.git
此解决方案强大且安全:它
.git
目录,即使有多个.gitignore
和.gitmodules
.git
目录和答案 1 :(得分:34)
在.htaccess
文件夹中创建.git
文件,并将以下内容放入此文件中:
Order allow,deny
Deny from all
答案 2 :(得分:33)
.htaccess
文件夹上的.git/
和权限都可以使用。我推荐前者:
<Directory .git>
order allow,deny
deny from all
</Directory>
答案 3 :(得分:6)
我不想在.git
目录中捣乱并且无法让Bennett's solution在Apache 2.2上工作,但是将以下内容添加到{{1}配置工作:
<VirtualHost>
答案 4 :(得分:5)
我不习惯单独控制对.git文件夹的访问,并选择通过apache config而不是.htaccess来执行此操作,以防止我覆盖它们,或者忘记重新安装等。
以下是一些希望他们帮助的详细说明。我使用的是Ubuntu 16.10。
答案 5 :(得分:3)
mod_rewrite将为您提供所需的效果:
RewriteEngine on
RewriteRule .*\.git/.* - [F]
答案 6 :(得分:2)
A more robust and simple option would be disabling the READ and Execution permission of the .git
directory.
Since mostly Apache (httpd) runs under a special user account, for example, it runs as user apache
on CentOS, while the .git
directory must be created under a real user account, so we can simply block the access by changing the permission. Moreover, this approach doesn't introduce any new file, nor affect the git commands.
The command can be:
chmod -R o-rx .git
答案 7 :(得分:0)
与其像大多数答案所建议的那样混乱.htaccess
规则,为什么不简单地将.git/
目录放在webroot之上?
在我的设置中,我的.git
目录通常位于以下位置:
/home/web/project_name/.git/
我的实际代码存在于
/home/web/project_name/www_root/
因为我的Web根目录(在Apache或Nginx上定义。我更喜欢后者)是/home/web/project_name/www_root/
,所以无法从Web上访问.git
目录,因为它的存在“比”更高Webroot
答案 8 :(得分:0)
apache2(LAMP)服务器的解决方案-您有2个位置添加.htaccess
内容。如果1个失败,请尝试下一个
在/ var / www / html根目录中创建.htaccess文件,并将代码粘贴到其中
<Directorymatch "^/.*/\.git/">
Order 'deny,allow'
Deny from all
</Directorymatch>
内部虚拟主机文件(/ etc / apache2 / sites-enabled /)>找到您的虚拟主机文件>打开文件>关闭虚拟主机标签后,粘贴
<Directorymatch "^/.*/\.git/">
Order 'deny,allow'
Deny from all
</Directorymatch>
无需重启服务器,它会在调用页面时运行