# HAYEX Events v168 - Hardening de la raiz del proyecto
#
# Esta carpeta NO es la raiz publica de la aplicacion. Mientras el hosting
# exponga hayex_events/ por HTTP, solamente se permite atravesar hacia public/.
# app/, config/, database/, storage/, tools/, scripts/, .env y cualquier otro
# archivo de la raiz quedan bloqueados con 403.

Options -Indexes
ErrorDocument 403 /hayex1/hayex_events/public/403.html

<IfModule mod_rewrite.c>
    RewriteEngine On

    # La unica zona publica permitida es /public y sus descendientes.
    RewriteRule ^public(?:/|$) - [L]

    # Todo lo demas de la raiz del proyecto es privado.
    RewriteRule ^ - [F,L]
</IfModule>

# Si mod_rewrite no estuviera disponible, fallar cerrado. public/.htaccess
# vuelve a autorizar expresamente su propia carpeta.
<IfModule !mod_rewrite.c>
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order allow,deny
        Deny from all
    </IfModule>
</IfModule>

# Defensa adicional para secretos y artefactos sensibles si cambia la
# configuracion del servidor en el futuro.
<FilesMatch "(^\.|\.env(?:\..*)?$|composer\.(json|lock)$|package(?:-lock)?\.json$|.*\.(?:sql|log|ini|conf|dist|md)(?:\..*)?$|.*\.bak(?:[._-].*)?$)">
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order allow,deny
        Deny from all
    </IfModule>
</FilesMatch>
