# =============================================================================
# Racine du projet — durcissement (SEC-12).
#
# Le vrai point d'entrée de Laravel est public/. Sans configuration, WAMP sert
# la racine du projet et EXPOSE le code source, .env, vendor/, storage/, etc.
# Ici : la racine nue redirige vers public/, et TOUT accès direct hors public/
# est refusé. Les vraies routes de l'application vivent sous public/.
#
# En production, préférez un VirtualHost dont DocumentRoot pointe sur public/ ;
# ce fichier reste un filet de sécurité si ce n'est pas encore le cas.
# =============================================================================

# Jamais de listing de répertoire.
Options -Indexes

<IfModule mod_rewrite.c>
    RewriteEngine On

    # La racine nue (…/vraidocs/) redirige vers le vrai point d'entrée public/.
    # Cible construite depuis l'URL demandée (chemin web absolu, portable).
    RewriteRule ^$ %{REQUEST_URI}public/ [L,R=302]

    # Tout ce qui ne passe pas par public/ est interdit : protège app/, config/,
    # routes/, storage/, vendor/, .env, composer.*, etc. contre l'accès direct.
    RewriteCond %{REQUEST_URI} !/public/
    RewriteRule . - [F]
</IfModule>

# Défense en profondeur si mod_rewrite est indisponible : refuse l'accès direct
# aux fichiers sensibles de la racine.
<FilesMatch "(?i)(^\.env|\.(env|git|json|lock|md|xml|dist|bak|sql|log|ini|sh)$|^(artisan|composer|package|phpunit|vite))">
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order allow,deny
        Deny from all
    </IfModule>
</FilesMatch>
