使.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