У меня есть веб-сайт, на котором я использую github (закрытый исходный код) для отслеживания изменений и обновления сайта. Единственная проблема в том, что каталог .git доступен через Интернет. Как я могу остановить это и по-прежнему использовать git?
Стоит ли использовать .htaccess? Следует ли мне изменить разрешения для .git?
Ответы:
Создайте
.htaccess
файл в.git
папке и поместите в этот файл следующее:Но учтите, что он будет потерян, если вы когда-нибудь повторно клонируете репозиторий.
источник
.git/
каталог, потому что он будет потерян, если вы когда-нибудь повторно клонируете репозиторий.Поместите это в
.htaccess
файл в корне вашего веб-сервера:Это надежное и безопасное решение : оно
.git
каталогов на вашем сайте, даже если их больше одного,.gitignore
и.gitmodules
.git
каталогов, иисточник
.git
папкой, но я все еще мог загрузить.gitignore
файл.server config, virtual host, directory, .htaccess
RedirectMatch 404 /\.git.*
Оба
.htaccess
и разрешения для.git/
папки будут работать. Я рекомендую первое:источник
<Files>
,<FilesMatch>
).Я не хотел возиться с
.git
каталогом и не смог заставить решение Беннета работать на Apache 2.2, но добавление следующего в мою<VirtualHost>
конфигурацию сработало:источник
Мне неудобно контролировать доступ к моим папкам .git по отдельности и я предпочитаю делать это через конфигурацию apache вместо .htaccess, чтобы я не перезаписал их или не забыл о новой установке и т. Д.
Вот несколько подробных инструкций, надеюсь, они помогут. Я использую Ubuntu 16.10.
источник
Более надежным и простым вариантом было бы отключение разрешений READ и Execution для
.git
каталога.Поскольку в основном Apache (httpd) работает под специальной учетной записью пользователя, например, он запускается как пользователь
apache
в CentOS, в то время как.git
каталог должен быть создан под реальной учетной записью пользователя, поэтому мы можем просто заблокировать доступ, изменив разрешение. Более того, этот подход не вводит никаких новых файлов и не влияет на команды git.Команда может быть:
источник
chmod
снова.mod_rewrite даст вам желаемый эффект:
источник
.git
каталога, поскольку он возвращает запрещенный код, а не Not Found.Вместо того, чтобы возиться с
.htaccess
правилами, как предлагают большинство ответов, почему бы просто не поместить.git/
каталог над корневым веб-каталогом?В моих настройках мой
.git
каталог обычно находится примерно в:/home/web/project_name/.git/
Мой настоящий код живет в
/home/web/project_name/www_root/
поскольку мой веб-корень (как определено на Apache или Nginx .. Я предпочитаю последний)
/home/web/project_name/www_root/
,.git
каталог не может быть доступен из Интернета, поскольку он находится «выше», чем веб-корневой каталог.источник
project_name
каталоге есть два подкаталога:www_root
где находятся файлы, которые фактически обслуживаются, когда посетитель просматривает мой сайт, и.git
где находится репо. Получение обновлений из репоwww_root
и его содержимого. Дело в том, что, поскольку.git
каталог иерархически расположен «над» моим фронт-контроллером, он недоступен через Интернет.