# ==================================================
# 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)
<IfModule mod_rewrite.c>
    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]
</IfModule>

# Proteger archivos de configuración
<FilesMatch "^(config|database|\.env).*\.(php|ini|conf)$">
    Require all denied
</FilesMatch>

# Proteger archivos ocultos
<FilesMatch "^\.|\.bak$|\.old$|\.orig$|\.save$|\.swp$|\.tmp$">
    Require all denied
</FilesMatch>

# Cabeceras de seguridad (si está disponible)
<IfModule mod_headers.c>
    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"
</IfModule>

# Compresión y cache (si están disponibles)
<IfModule mod_deflate.c>
    <FilesMatch "\.(html|htm|php|css|js|xml|txt|json)$">
        SetOutputFilter DEFLATE
    </FilesMatch>
</IfModule>

<IfModule mod_expires.c>
    ExpiresActive On
    <FilesMatch "\.(css|js)$">
        ExpiresDefault "access plus 1 month"
    </FilesMatch>
    <FilesMatch "\.(jpg|jpeg|png|gif|webp|svg|ico)$">
        ExpiresDefault "access plus 6 months"
    </FilesMatch>
</IfModule>

# 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.
