php_value error_log "/home/iivzwpqp/logs/php.error.log"
php_flag log_errors On
php_value error_log "/home/iivzwpqp/logs/php.error.log"
php_flag log_errors On
# --- BLOQUEO DE SEGURIDAD BUYTUBESTORE ---
Require all denied
# 1-nov (seguridad): estos archivos NO estaban bloqueados y se podían abrir desde el navegador:
# - .env (credenciales de la base de datos) - bot_debug.txt (correos que consultan tus clientes)
# - *.txt / *.db / *.sql / *.md / *.sh (respaldos, esquemas, notas)
# - migrar.php y diagnostico_bot.php (herramientas de mantenimiento, no deben ser públicas)
Require all denied
Require all denied
# Nunca servir el contenido de node_modules ni de carpetas internas por la web
RedirectMatch 403 ^/(node_modules|config|tmp|data)(/|$)
# 31-oct: bloqueo extra de defensa en profundidad para los archivos de credenciales.
# Normalmente un .php nunca "se lee" desde el navegador (el servidor lo ejecuta, no lo
# muestra), pero si algún día el manejador de PHP falla o se desconfigura, esta regla
# evita que esos 2 archivos se sirvan como texto plano.
Require all denied
# --- 31-oct: COMPRESIÓN Y CACHÉ (velocidad de carga) ---
# Antes no había ninguna regla de esto: cada archivo .js/.css se mandaba completo y
# sin comprimir en cada visita. Esto ayuda en TODA carga (incluso en ventana de
# incógnito, que no guarda caché entre sesiones, pero sí comprime cada petición).
AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/json
ExpiresActive On
ExpiresByType text/css "access plus 7 days"
ExpiresByType application/javascript "access plus 7 days"
ExpiresByType text/javascript "access plus 7 days"
ExpiresByType image/png "access plus 30 days"
ExpiresByType image/jpeg "access plus 30 days"
ExpiresByType image/webp "access plus 30 days"
ExpiresByType image/x-icon "access plus 30 days"
Header set Cache-Control "public, max-age=604800"