# Front controller + headers de seguridad (Apache / cPanel).
# El docroot del dominio debe apuntar a esta carpeta `public/`.

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Preservar el header Authorization: Apache/CGI suele descartarlo, y sin él la API
    # Bearer (JWT) no funcionaría. Lo reinyectamos como variable de entorno para PHP.
    RewriteCond %{HTTP:Authorization} .
    RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Forzar HTTPS en producción (descomenta en cPanel con TLS activo):
    # RewriteCond %{HTTPS} !=on
    # RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    # No reescribir archivos/directorios que existen (assets estáticos).
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]

    # Todo lo demás → front controller.
    RewriteRule ^ index.php [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 "strict-origin-when-cross-origin"
    Header always set Cross-Origin-Opener-Policy "same-origin"
    # HSTS: activar SOLO con HTTPS estable.
    # Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    # CSP: AceUI es self-contained (fuentes del sistema, sin CDNs). 'unsafe-inline' en
    # style-src es necesario para los estilos inline por-elemento de AceUI (p.ej. width de
    # las barras de progreso). Scripts SOLO desde el propio origen (bundle + app.js).
    Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self'; connect-src 'self'; manifest-src 'self'; worker-src 'self'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; object-src 'none'"
</IfModule>

# Nunca servir dotfiles ni .env si por error quedaran dentro del docroot.
<FilesMatch "^\.">
    Require all denied
</FilesMatch>

# Tipo MIME correcto del manifest PWA.
<IfModule mod_mime.c>
    AddType application/manifest+json .webmanifest
</IfModule>

# Desactivar listado de directorios.
Options -Indexes
