Options -Indexes

# Bloqueia download direto de qualquer arquivo sensivel na raiz do app
# (o front controller PHP continua liberado, so nao os dados/config/logs).
<FilesMatch "\.(env|env\.local|ini|sql|md|lock|json|txt|log|py|zip|sh|ps1|bak)$">
    Require all denied
</FilesMatch>
<Files "error_log">
    Require all denied
</Files>
<FilesMatch "^\.">
    Require all denied
</FilesMatch>

<IfModule mod_rewrite.c>
    RewriteEngine On

    # asset()/templates geram URL "assets/..." relativa a raiz do app (pensado
    # originalmente pra rodar com public/ como document root) — aqui a raiz do
    # app É o document root, então "assets/" só existe de fato dentro de
    # public/assets/. Sem isso, toda imagem/CSS/JS do site dava 404.
    RewriteRule ^assets/(.*)$ public/assets/$1 [L]

    # Bloqueia acesso direto a qualquer coisa dentro das pastas internas do app
    # (so public/ e o index.php da raiz devem responder a requisicoes HTTP).
    RewriteRule ^(vendor|storage|migrations|db|cli|scripts|config|src|templates|docs)(/|$) - [F,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</IfModule>
