使.git目录的网页无法访问
我有一个网站,我使用github(封闭源)来跟踪更改和更新网站。 唯一的问题是,看起来.git目录可以通过网页访问。 我怎样才能阻止这个,仍然能够使用Git?
我应该使用.htaccess吗? 我应该更改.git的权限吗?
在.git文件夹中创build.htaccess文件,并将以下内容放在此文件中: 
 Order allow,deny Deny from all 
 把它放在你的web服务器根目录下的.htaccess文件中: 
 RedirectMatch 404 /\.git 
这个解决scheme是健壮和安全的 :它
-  适用于您网站中的所有.git目录,即使存在多个,
-  也隐藏其他Git文件,如.gitignore和.gitmodules
-  即使对于新添加的.git目录也是如此
- 甚至没有放弃目录存在的事实。
  .git/文件夹的.htaccess和权限都可以工作。 我build议前者: 
 <Directory .git> order allow,deny deny from all </Directory> 
mod_rewrite会给你想要的影响:
 RewriteEngine on RewriteRule .*\.git/.* - [F] 
 我不想在.git目录中.git ,也无法使Bennett的解决scheme在Apache 2.2上工作,但在我的<VirtualHost>configuration中添加了以下内容: 
 RewriteRule ^.*\.git.* - [R=404] 
 更健壮和简单的选项将禁用.git目录的读取和执行权限。 
 由于大多数Apache(httpd)是以一个特殊用户帐户运行的,例如在CentOS上以apache用户身份运行,而.git目录必须在真实用户帐户下创build,因此我们可以通过更改权限来简单地阻止访问。 而且,这种方法不会引入任何新文件,也不会影响git命令。 
该命令可以是:
 chmod -R o-rx .git 
我并不习惯于单独控制对.git文件夹的访问,而是select通过apacheconfiguration来代替.htaccess,以防止覆盖它们,或者忘记进行新的安装等。
这里有一些详细的说明希望他们帮助。 我使用Ubuntu 16.10。
- 首先检查浏览器中导航到.git文件夹的情况。 在我的情况下,我被列入目录列表。 如果你看到你不应该看到什么(即你没有得到404),请执行以下操作。
- 使用apache2ctl -V来获取HTTPD_ROOT和SERVER_CONFIG_FILE
- 使用它来编辑你的apacheconfiguration,在我的情况下$ sudo nano /etc/apache2/apache2.conf
- 在configuration文件的某处添加以下内容:RedirectMatch 404 /.git
- 重新启动apache:$ sudo service apache2 restart
- 现在,如果您再次导航到该文件夹,现在应该得到一个404
- 我试着用.gitignore,也得到了404