# Configuración básica Options -Indexes +FollowSymLinks -MultiViews # Habilitar reescritura de URLs RewriteEngine On # Asegurar que el servidor siga los enlaces simbólicos Options +FollowSymLinks # Regla para el webhook de Telegram - debe ser lo primero RewriteCond %{REQUEST_URI} ^/telegram_bot_webhook\.php [NC] RewriteRule ^ - [L] # Reglas para otros archivos de webhook RewriteRule ^(telegram_webhook|test_webhook|set_webhook)\.php$ - [L,NC] # Excluir archivos específicos de la verificación de sesión RewriteCond %{REQUEST_URI} !^/login\.php [NC] RewriteCond %{REQUEST_URI} !^/assets/ [NC] RewriteCond %{REQUEST_URI} !^/galeria/ [NC] RewriteCond %{REQUEST_URI} !^/translate_proxy\.php [NC] RewriteCond %{REQUEST_URI} !\.(css|js|jpe?g|png|gif|ico|svg|woff2?|ttf|eot|json|txt|map)$ [NC] # Para el resto de las rutas, redirigir a login.php si no hay sesión RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !^/translate_proxy\.php [NC] RewriteRule ^(.*)$ /login.php [L,QSA] # Configuración de seguridad # Protección básica de cabeceras Header always set X-Frame-Options "SAMEORIGIN" Header always set X-XSS-Protection "1; mode=block" Header always set X-Content-Type-Options "nosniff" # Habilita la política de seguridad de contenido (CSP) - Ajusta según sea necesario # Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data:;" # Habilita HSTS (solo para HTTPS) # Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" # Configuración de referrer policy Header always set Referrer-Policy "strict-origin-when-cross-origin" # Eliminar cabeceras que revelan información Header unset X-Powered-By Header unset X-Pingback Header unset Server Header unset X-AspNet-Version Header unset X-AspNetMvc-Version # Proteger archivos sensibles Require all denied Order deny,allow Deny from all # Deshabilitar la visualización de directorios Options -Indexes # Prevenir acceso a archivos ocultos Require all denied # Configuración de caché para mejorar el rendimiento ExpiresActive On ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/gif "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType text/css "access plus 1 month" ExpiresByType application/pdf "access plus 1 month" ExpiresByType text/x-javascript "access plus 1 month" ExpiresByType application/x-shockwave-flash "access plus 1 month" ExpiresByType image/x-icon "access plus 1 year" ExpiresDefault "access plus 2 days" # Comprimir archivos para mejorar el rendimiento AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE image/svg+xml # Configuración de PHP php_flag display_errors off php_value max_execution_time 30 php_value max_input_time 60 php_value max_input_vars 1000 php_value memory_limit 128M php_value post_max_size 32M php_value upload_max_filesize 32M php_flag log_errors on php_value error_log /var/log/php_errors.log