# Portal Liderazgo — protección de la raíz del proyecto (RNF-05).
#
# Lo correcto en producción es que el DocumentRoot apunte a la carpeta public/ (ver
# documentacion/manuales/guia_despliegue.md). Este archivo cubre el caso en que el servidor
# sirva la raíz del proyecto (XAMPP local o un hosting compartido sin DocumentRoot configurable):
# - nunca lista carpetas;
# - niega el acceso directo a app/, writable/, vendor/, tests/, contenido/, documentacion/,
#   .env, composer.*, spark y demás archivos del proyecto;
# - reenvía internamente todo lo demás a public/, donde vive el front controller.

Options -Indexes

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Archivos y carpetas que jamás deben servirse
    RewriteRule ^\.env - [F,L]
    RewriteRule ^(app|writable|vendor|tests|contenido|documentacion|build|tmp)(/|$) - [F,L]
    RewriteRule ^(composer\.(json|lock)|spark|preload\.php|phpunit\.dist\.xml|env|builds|CLAUDE\.md|AGENTS\.md|LICENSE|README\.md)$ - [F,L]

    # Todo lo demás se atiende desde public/ (reescritura interna: la URL no cambia)
    RewriteCond %{REQUEST_URI} !^/?public/
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

# Sin mod_rewrite: al menos ocultar los archivos sensibles
<FilesMatch "^(\.env|env|composer\.(json|lock)|spark|preload\.php|phpunit\.dist\.xml|CLAUDE\.md|AGENTS\.md)$">
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order deny,allow
        Deny from all
    </IfModule>
</FilesMatch>
