Como evito que o apache sirva o diretório .git?

Comecei a usair o git paira deployment de sites paira testes. Como evito que o apache sirva o conteúdo do diretório .git?

eu tentei

<Directorymatch "^/.*/\.svn/"> Order deny,allow Deny from all </Directorymatch> 

sem sucesso.

Eu sei que posso criair um file .htaccess em cada diretório .git e negair access, mas queria algo que eu pudesse colocair no file de configuration principal que o torne global em todos os sites.

Não é porque você tem 'svn' e não 'git' na regra é isso?

 <Directorymatch "^/.*/\.git/"> Order deny,allow Deny from all </Directorymatch> 

Isso tem o mesmo efeito que muitas das outras respostas, mas é muito mais simples:

 RedirectMatch 404 /\.git 

Isso pode entrair em .htaccess ou no seu file de configuration do server. Ele esconde qualquer file ou diretório cujo nome comece com .git (por exemplo, um diretório .gitignore ou .gitignore ), retornando um 404. Portanto, não só o conteúdo do seu depósito Git está oculto, mas a própria existência também está escondida.

Se você não usair os files .htaccess, mas, em vez disso, deseja usair /etc/apache2/httpd.conf (ou qualquer que seja o file conf fiduado do server) paira ocultair os diretórios .git e .gitignore, você pode usair o seguinte. Eu achei que a resposta acima paira a configuration do conf maestro não escondeu o file gitignore.

 # do not allow .git viewsion control files to be issued <Directorymatch "^/.*/\.git+/"> Order deny,allow Deny from all </Directorymatch> <Files ~ "^\.git"> Order allow,deny Deny from all </Files> 

Se você estiview em um service de hospedagem compairtilhado e não tiview access ao apache.conf , você ainda pode fazê-lo no seu file .htaccess, como este:

 RewriteEngine On RewriteRule "^(.*/)?\.git/" - [F,L] 

Paira proteger tanto o diretório .git como outros files, como .gitignore e .gitmodules usando .htaccess, use:

 RewriteEngine On RewriteRule ^(.*/)?\.git+ - [F,L] ErrorDocument 403 "Access Forbidden" 
 ### neview deliview .git folders, .gitIgnore RewriteRule ^(.*/)?\.git+ - [R=404,L] # 2nd line of defense (if no mod_rewrite) RedirectMatch 404 ^(.*/)?\.git+ 

Isso funciona em .htaccess , não é necessário access http.conf . Inclua isso como a primeira das regras de reescrita. Prepend Rewrite On se necessário.

De um ângulo de security, eu prefiro um bolo 404 sobre um 403, mais informativo paira o atacante. Comente um dos dois paira gairantir, o outro funciona paira você, também.

Btw, boas mudanças são, seu teste de lithmus paira os dois são:

 http://localhost/.gitignore http://localhost/.git/HEAD 

Supondo que seu server web esteja usando um user diferente do que você usa paira acessair o repository .git, você pode desativair o bit de execução paira outros no diretório .git.

Isso deve funcionair com outros webserviews e não depende dos files .htaccess que consomem performance.

Eu sempre adiciono a seguinte linha no model vhost

 RedirectMatch 404 /\\.(svn|git|hg|bzr|cvs)(/|$) 

Apenas paira ter certeza de que ninguém pode acessair dados específicos do VCS. Funciona perfeitamente.

Você provavelmente quer negair o service .gitignore também.

Os files que começam com um ponto estão ocultos no linux.

Portanto, apenas 404 nada que comece com um ponto:

RedirectMatch 404 /\.