# Gestionale Dogre — configurazione Apache/XAMPP.
# La cartella può stare in qualunque sottocartella di htdocs: nessun percorso
# assoluto qui dentro.

Options -Indexes
DirectoryIndex index.php index.html

<IfModule mod_rewrite.c>
  RewriteEngine On

  # /api/... e /public/... hanno regole proprie (o nessuna): non toccarli.
  RewriteRule ^(api|public)/ - [L]

  # Cartelle che non devono MAI essere servite via web.
  RewriteRule ^(data|server|node_modules)(/|$) - [F,L]
  RewriteRule ^(package(-lock)?\.json|\.env.*|Dockerfile|docker-compose\.yml)$ - [F,L]

  # Il front-end sta in public/: lo serviamo dalla radice dell'app.
  RewriteRule ^$ public/ [L]
  RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

<IfModule mod_headers.c>
  Header always set X-Content-Type-Options "nosniff"
  Header always set X-Frame-Options "DENY"
  Header always set Referrer-Policy "same-origin"
  Header always set Permissions-Policy "geolocation=(), microphone=(), camera=()"

  # I file del frontend non hanno un hash nel nome: senza questo, dopo un
  # aggiornamento il browser continuerebbe a usare i moduli in cache e l'app
  # si romperebbe a metà (moduli nuovi che ne importano di vecchi).
  # Con no-cache il browser rivalida sempre e l'ETag evita di riscaricare.
  <FilesMatch "\.(js|css|html)$">
    Header set Cache-Control "no-cache, must-revalidate"
  </FilesMatch>
</IfModule>
