He comenzado a usar git para la implementación de sitios web para pruebas. ¿Cómo evito que apache sirva el contenido del directorio .git?
Lo intenté
<Directorymatch "^/.*/\.svn/">
Order deny,allow
Deny from all
</Directorymatch>
Sin éxito.
Sé que puedo crear un archivo .htaccess en cada directorio .git y denegar el acceso, pero quería algo que pudiera poner en el archivo de configuración principal que lo haga global en todos los sitios web.
apache-2.2
git
Shoan
fuente
fuente

Respuestas:
No funciona porque tienes 'svn' y no 'git' en la regla. Todo lo que tienes que hacer es reemplazar el 'svn' con 'git'.
fuente
<DirectoryMatch /\.git/>Esto tiene el mismo efecto que muchas de las otras respuestas, pero es mucho más simple:
Esto puede entrar en
.htaccesssu archivo de configuración del servidor. Oculta cualquier archivo o directorio cuyo nombre comience.git(por ejemplo, un.gitdirectorio o.gitignorearchivo) al devolver un 404. Por lo tanto, no solo se oculta el contenido de su repositorio Git, sino que también se oculta su existencia.fuente
.gitcarpetas seguirán siendo visibles, pero obtendrá el 404 cuando intente acceder a ellas.Si no usa archivos .htaccess pero en su lugar quiere usar /etc/apache2/httpd.conf (o el archivo de configuración maestro de su servidor) para ocultar los directorios .git y los archivos .gitignore, puede usar lo siguiente. Encontré que la respuesta anterior para la configuración de configuración maestra no ocultaba el archivo gitignore.
fuente
www.example.com/.git/configarchivo en Apache httpd 2.4.27.Si está en un servicio de alojamiento compartido y no tiene acceso a apache.conf , aún puede hacerlo en su archivo .htaccess, de esta manera:
fuente
Esto funciona en
.htaccess, no sehttp.confrequiere acceso. Incluya esto como la primera de las reglas de reescritura. AnteponerRewrite Onsi es necesario.Desde un punto de vista de seguridad, prefiero un 404 falso sobre un 403, más informativo para el atacante. Comente uno de los dos, para asegurarse de que el otro también funcione para usted.
Por cierto, buenos cambios son, su prueba de litmo para los dos son:
fuente
RewriteEngine Onantes de su RewriteRule. Pero de todos modos es tautológico y redundante porque el RedirectMatch más simple es suficiente por sí solo. Aunque incluso eso podría simplificarse. Básicamente estoy recomendando mi respuesta en su lugar. :)Para proteger tanto el directorio .git como otros archivos como .gitignore y .gitmodules usando .htaccess, use:
fuente
Siempre agrego la siguiente línea en la plantilla vhost
Solo para asegurarse de que nadie pueda acceder a datos específicos de VCS. Funciona perfecto
fuente
Suponiendo que su servidor web esté usando un usuario diferente al que usa para acceder al repositorio .git, puede deshabilitar el bit de ejecución para otros en el directorio .git.
Esto debería funcionar con otros servidores web y no depende de archivos .htaccess que consuman rendimiento.
fuente
Para aquellos que buscan simplemente negar todos los archivos y directorios "ocultos" en una distribución de Linux (generalmente todos los archivos que comienzan con un "."), Esto es lo que funciona en Apache 2.4 cuando se coloca en el contexto de configuración del servidor:
Y aquí está el estilo antiguo de Apache 2.2 (misma expresión regular, solo diferentes directivas de autenticación):
Entonces no tienes que preocuparte
.gitni.svnespecíficamente. Eso también coincidiría con cosas como.htaccesse.htpasswdinherentemente.Personalmente, me gusta emitir 403 para tales solicitudes en lugar de 404, pero podría usar fácilmente una RewriteRule en lugar de la denegación de autenticación, de esta manera:
fuente
Probablemente quieras negar que sirvas
.gitignoretambién.Los archivos que comienzan con un punto están ocultos en Linux.
Por lo tanto, solo 404 cualquier cosa que comience con un punto:
RedirectMatch 404 /\.fuente
Esto es un poco tarde, pero mi respuesta es un poco diferente, así que pensé en agregarlo. Esto debe ir en el archivo httpd.conf. El
<Files "*">anidado dentro de la<Directory>etiqueta bloqueará todos los archivos en el directorio.fuente