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