# ==================================================
# WhatsApp Bot Manager - HestiaCP compatible minimal .htaccess
# Simplified for shared hosting / HestiaCP (avoids server-level directives)
# ==================================================
# Seguridad básica
Options -Indexes
DirectoryIndex index.php index.html
# Activar rewrite (si está disponible)
RewriteEngine On
# ── ERP: URLs limpias para módulos (/modulo/vista → index.php?m=modulo&v=vista)
# Solo aplica cuando el módulo está bajo /modules/ pero se accede con URL limpia.
# No redirige archivos ni carpetas que existen físicamente.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/?$ erp.php?m=$1&v=$2 [QSA,L]
# Bloquear acceso a directorios de desarrollo y temporales
RewriteRule ^(dev|tmp)(/|$) - [F,L]
# Bloquear llamadas sospechosas en query string (buscar palabras SQL completas; evitar falsos positivos en parámetros como 'before')
RewriteCond %{QUERY_STRING} (^|[^A-Za-z0-9_])(union|select|insert|delete|drop|create|update|and|or)([^A-Za-z0-9_]|$) [NC]
RewriteRule .* - [F,L]
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC]
RewriteRule .* - [F,L]
RewriteCond %{QUERY_STRING} \.\.\/ [NC]
RewriteRule .* - [F,L]
# Proteger archivos de configuración
Require all denied
# Proteger archivos ocultos
Require all denied
# Cabeceras de seguridad (si está disponible)
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
# Compresión y cache (si están disponibles)
SetOutputFilter DEFLATE
ExpiresActive On
ExpiresDefault "access plus 1 month"
ExpiresDefault "access plus 6 months"
# Charset por defecto
AddDefaultCharset UTF-8
# Nota: ServerTokens y ServerSignature son directivas a nivel de servidor y no están permitidas en .htaccess en muchos entornos.
# Si necesitas esas opciones, configúralas en la configuración global de Apache (httpd.conf/extra) o solicita al proveedor que lo ajuste.