Comecei a usar o git para implantação de sites para teste. Como impedir que o apache sirva o conteúdo do diretório .git?
eu tentei
<Directorymatch "^/.*/\.svn/">
Order deny,allow
Deny from all
</Directorymatch>
sem sucesso.
Sei que posso criar um arquivo .htaccess em cada diretório .git e negar acesso, mas queria algo que pudesse colocar no arquivo de configuração principal que o torna global em todos os sites.
apache-2.2
git
Shoan
fonte
fonte
Respostas:
Não está funcionando porque você tem 'svn' e não 'git' na regra. Tudo que você precisa fazer é substituir o 'svn' por 'git'.
fonte
<DirectoryMatch /\.git/>
Isso tem o mesmo efeito que muitas das outras respostas, mas é muito mais simples:
Isso pode entrar no
.htaccess
arquivo de configuração do servidor. Ele oculta qualquer arquivo ou diretório cujo nome comece.git
(por exemplo, um.git
diretório ou.gitignore
arquivo) retornando um 404. Portanto, não apenas o conteúdo do seu repositório Git está oculto, mas também a sua existência.fonte
.git
pastas ainda estarão visíveis, mas você obterá o 404 ao tentar acessá-las.Se você não usa arquivos .htaccess, mas deseja usar o /etc/apache2/httpd.conf (ou qualquer que seja o arquivo conf principal do servidor) para ocultar os diretórios .git e os arquivos .gitignore, você pode usar o seguinte. Encontrei a resposta acima para a configuração de configuração mestre não oculta o arquivo gitignore.
fonte
www.example.com/.git/config
arquivo no Apache httpd 2.4.27.Se você estiver em um serviço de hospedagem compartilhada e não tiver acesso ao apache.conf , ainda poderá fazê-lo no seu arquivo .htaccess, desta forma:
fonte
Isso funciona
.htaccess
, não éhttp.conf
necessário acesso. Inclua isso como a primeira das regras de reescrita. Anexe,Rewrite On
se necessário.Do ponto de vista da segurança, prefiro um 404 falso ao invés de um 403, mais informativo do que o invasor. Comente um dos dois, para garantir que o outro funcione para você também.
Btw, boas mudanças são, seu teste lititológico para os dois são:
fonte
RewriteEngine On
antes da RewriteRule. Mas de qualquer maneira é tautológico e redundante porque o RedirectMatch mais simples é suficiente por si só. Embora até isso possa ser simplificado. Basicamente, estou recomendando minha resposta . :)Para proteger o diretório .git e outros arquivos, como .gitignore e .gitmodules usando .htaccess, use:
fonte
Eu sempre adiciono a seguinte linha no modelo vhost
Apenas para ter certeza de que ninguém pode acessar dados específicos do VCS. Funciona perfeito.
fonte
Supondo que seu servidor da Web esteja usando um usuário diferente daquele que você usa para acessar o repositório .git, você poderá desativar o bit de execução para outras pessoas no diretório .git.
Isso deve funcionar com outros servidores da Web e não depende de arquivos .htaccess que consomem desempenho.
fonte
Para aqueles que procuram simplesmente negar todos os arquivos e diretórios "ocultos" em uma distribuição Linux (geralmente todos os arquivos que começam com "."), Eis o que funciona no Apache 2.4 quando colocado no contexto conf do servidor:
E aqui está o estilo antigo do Apache 2.2 (o mesmo regex, apenas diretivas de autenticação diferentes):
Então você não precisa se preocupar
.git
ou.svn
especificamente. Isso também corresponderia a coisas como.htaccess
e.htpasswd
inerentemente.Pessoalmente, eu gosto de emitir 403s para essas solicitações em vez de 404s, mas você pode facilmente usar um RewriteRule em vez de negação de autenticação, assim:
fonte
Você provavelmente quer negar servir
.gitignore
também.Arquivos começando com um ponto estão ocultos no linux.
Portanto, apenas 404 qualquer coisa que comece com um ponto:
RedirectMatch 404 /\.
fonte
É um pouco tarde, mas minha resposta é um pouco diferente, então pensei em adicioná-la. Isso deve estar no arquivo httpd.conf. O
<Files "*">
aninhado dentro da<Directory>
tag irá bloquear todos os arquivos no diretório.fonte