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"