Я начал использовать git для развертывания веб-сайтов для тестирования. Как я могу запретить Apache обслуживать содержимое каталога .git?
Я пытался
<Directorymatch "^/.*/\.svn/">
Order deny,allow
Deny from all
</Directorymatch>
без успеха.
Я знаю, что могу создать файл .htaccess в каждом каталоге .git и запретить доступ, но я хотел что-то, что я мог бы поместить в основной файл конфигурации, чтобы сделать его глобальным для всех веб-сайтов.
apache-2.2
git
Shoan
источник
источник
Ответы:
Это не работает, потому что у вас есть «svn», а не «git» в правиле. Все, что вам нужно сделать, это заменить svn на git.
источник
<DirectoryMatch /\.git/>
Это имеет тот же эффект, что и многие другие ответы, но намного проще:
Это может войти в
.htaccess
или ваш файл конфигурации сервера. Он скрывает любой файл или каталог, имя которого начинается с.git
(например,.git
каталог или.gitignore
файл), возвращая 404. Таким образом, не только содержимое вашего репозитория Git скрыто, но и само его существование скрыто.источник
.git
папки все равно будут видны, но вы получите 404 при попытке доступа к ним.Если вы не используете файлы .htaccess, а вместо этого хотите использовать /etc/apache2/httpd.conf (или каким-либо другим основным файлом conf вашего сервера), чтобы скрыть как каталоги .git, так и файлы .gitignore, вы можете использовать следующее. Я нашел ответ выше, для настройки master conf не скрывал файл gitignore.
источник
www.example.com/.git/config
файл в Apache httpd 2.4.27.Если вы пользуетесь услугами общего хостинга и не имеете доступа к apache.conf , вы все равно можете сделать это в своем файле .htaccess, например так:
источник
Это работает
.htaccess
,http.conf
доступ не требуется. Включите это как первое из правил переписывания. ПриготовьтеRewrite On
при необходимости.С точки зрения безопасности я предпочитаю фиктивную 404, а не 403, более информативную для атакующего. Прокомментируйте одно из двух, чтобы убедиться, что другое работает и для вас.
Кстати, хорошие изменения, ваш тест на лакмус для двух:
источник
RewriteEngine On
перед вашим RewriteRule. Но в любом случае это тавтологический и избыточный, потому что более простой RedirectMatch достаточно сам по себе. Хотя даже это можно упростить. В основном я рекомендую мой ответ вместо этого. :)Чтобы защитить каталог .git, а также другие файлы, такие как .gitignore и .gitmodules, использующие .htaccess, используйте:
источник
Я всегда добавляю следующую строку в шаблон vhost
Просто чтобы быть уверенным, что никто не может получить доступ к конкретным данным VCS. Работает отлично.
источник
Предполагая, что ваш веб-сервер использует пользователя, отличного от того, которого вы используете для доступа к репозиторию .git, вы можете отключить бит выполнения для других пользователей в каталоге .git.
Это должно работать с другими веб-серверами и не полагаться на ресурсоемкие файлы .htaccess.
источник
Для тех, кто хочет просто запретить все «скрытые» файлы и каталоги в дистрибутиве Linux (как правило, все файлы, начинающиеся с «.»), Вот что работает на Apache 2.4, когда помещается в контекст conf сервера:
А вот более старый стиль Apache 2.2 (тот же regex, только разные директивы auth):
Тогда вам не нужно беспокоиться
.git
или.svn
конкретно. Это также соответствует вещам, как.htaccess
и по.htpasswd
своей сути.Лично мне нравится выдавать 403 для таких запросов вместо 404, но вы можете легко использовать RewriteRule вместо отказа в аутентификации, например так:
источник
Вы, вероятно, хотите отрицать и служение
.gitignore
.Файлы, начинающиеся с точки, скрыты в Linux.
Поэтому всего 404 всего, что начинается с точки:
RedirectMatch 404 /\.
источник
Это немного поздно, но мой ответ немного отличается, поэтому я решил добавить его. Это должно быть в файле httpd.conf.
<Files "*">
Вложенный внутри<Directory>
тега будет блокировать все файлы в каталоге.источник