# ==============================================================================
# MOTOR DE REESCRITURA
# ==============================================================================
# Activar el motor de reescritura de URLs
RewriteEngine On


# ==============================================================================
# REDIRECCIONES CANÓNICAS (HTTPS Y NO-WWW EN UNA SOLA REGLA)
# ==============================================================================
# Forzar HTTPS y redirigir de www a no-www de forma eficiente.
# Condición 1: Si el host empieza con "www."
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] [OR]
# Condición 2: O si la conexión no está en HTTPS
RewriteCond %{HTTPS} !=on
# Si CUALQUIERA de las dos condiciones es cierta, aplica la regla:
# Redirige a la versión https:// y sin www. del dominio.
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


# ==============================================================================
# REGLAS PARA SINGLE PAGE APPLICATION (SPA) - REACT
# ==============================================================================
# Define la carpeta base de la aplicación. Usa "/" si está en la raíz.
RewriteBase /
# No aplica las reglas si la petición es para el propio index.html
RewriteRule ^index.html$ - [L]
# Si la petición NO es para un archivo, directorio o enlace simbólico existente...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
# ...entonces, redirige internamente la petición al index.html
RewriteRule . /index.html [L]


# ==============================================================================
# POLÍTICAS DE CACHÉ DEL NAVEGADOR (MEJORA DE VELOCIDAD)
# ==============================================================================
<IfModule mod_expires.c>
  ExpiresActive On
  # Cache para imágenes y medios por 1 mes
  ExpiresByType image/jpeg "access plus 1 month"
  ExpiresByType image/gif "access plus 1 month"
  ExpiresByType image/png "access plus 1 month"
  ExpiresByType image/webp "access plus 1 month"
  ExpiresByType image/svg+xml "access plus 1 month"
  ExpiresByType video/mp4 "access plus 1 month"
  # Cache para CSS y JS por 1 año (React les cambia el nombre si cambian)
  ExpiresByType text/css "access plus 1 year"
  ExpiresByType application/javascript "access plus 1 year"
  # No cachear archivos importantes que pueden cambiar
  <FilesMatch "\.(html|htm|json|xml)$">
    ExpiresDefault "access plus 0 seconds"
  </FilesMatch>
</IfModule>


# ==============================================================================
# CABECERAS DE SEGURIDAD (MUY RECOMENDADO)
# ==============================================================================
<IfModule mod_headers.c>
  # Obliga al navegador a usar solo HTTPS (después del primer acceso)
  Header set Strict-Transport-Security "max-age=31536000; includeSubDomains" env=HTTPS
  # Evita que el sitio sea cargado en un <iframe> (previene clickjacking)
  Header set X-Frame-Options "SAMEORIGIN"
  # Evita que el navegador intente adivinar el tipo de contenido de un archivo
  Header set X-Content-Type-Options "nosniff"
  # Controla la información de referido que se envía
  Header set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>


# ==============================================================================
# REGLAS DE SEGURIDAD ADICIONALES
# ==============================================================================
# Deshabilitar el listado de archivos en directorios
Options -Indexes

# Bloquear acceso a la carpeta "backend"
RewriteRule ^backend/ - [F,L,NC]

# Personalizar página de error (más profesional)
ErrorDocument 403 /403.html