我有一个网站,我使用 github (封闭源码)跟踪变化和更新网站。唯一的问题是。Git 目录可以通过 web 访问。我怎样才能在停止这个操作的同时仍然能够使用 git 呢?
我应该使用. htaccess 吗? 我应该更改. git 的权限吗?
.htaccess和对 .git/文件夹的权限都可以使用。我建议使用前者:
.htaccess
.git/
<Directory .git> order allow,deny deny from all </Directory>
在 .git文件夹中创建一个 .htaccess文件,并在该文件中放入以下内容:
.git
Order allow,deny Deny from all
但是请注意,如果您重新克隆了存储库,那么它就会丢失
Mod _ rewrite 会给你想要的效果:
RewriteEngine on RewriteRule .*\.git/.* - [F]
把它放在一个 .htaccess文件在你的网络服务器的 根:
RedirectMatch 404 /\.git
这个解决方案是 强壮和 安全: it
.gitignore
.gitmodules
我不想在 .git目录中浪费时间,因此无法让 Bennett 的解决方案在 Apache 2.2上工作,但是在我的 <VirtualHost>配置中添加以下内容是可行的:
<VirtualHost>
RewriteRule ^.*\.git.* - [R=404]
一个更健壮、更简单的选项是禁用 .git目录的 READ 和 Execution 权限。
例如,由于大多数 Apache (httpd)在一个特殊的用户帐户下运行,它在 CentOS 上作为用户 apache运行,而 .git目录必须在一个真实的用户帐户下创建,所以我们可以通过更改权限来阻止访问。此外,这种方法不会引入任何新文件,也不会影响 git 命令。
apache
命令可以是:
chmod -R o-rx .git
我不喜欢控制访问我的。每个 git 文件夹并选择通过 apache config 而不是。防止我覆盖它们,或者忘记新安装等等。
下面是一些详细的说明,希望能对你有所帮助。我使用的是 Ubuntu 16.10。
为什么不干脆把 .git/目录放在 webroot 之上呢?
在我的设置中,我的 .git目录通常位于这样的地方:
/home/web/project_name/.git/
我真正的代码存在于
/home/web/project_name/www_root/
因为我的网络根(定义在 Apache 或 Nginx。.我更喜欢后者)是 /home/web/project_name/www_root/有没有办法的 .git目录可以从网络访问,因为它生活“高于”比 webroot
解决方案的 apache2(LAMP)服务器-您有2个地方添加 .htaccess内容. . 如果1失败,尝试下一步
在/var/www/html 根目录中创建. htaccess 文件,并将代码粘贴到其中
<Directorymatch "^/.*/\.git/"> Order 'deny,allow' Deny from all </Directorymatch>
在虚拟主机文件内部(/etc/apache2/sites- 启用/) > 查找虚拟主机文件 > 打开文件 > 关闭虚拟主机标记后粘贴
不需要重新启动服务器,它在调用页面时运行