Files
whatsapp/.htaccess
T
2026-04-16 22:23:33 -05:00

75 lines
2.7 KiB
ApacheConf

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