# Apache Configuration para Portal de Vendedores PWA
# Configuración específica para Service Worker, Manifest y PWA

<IfModule mod_rewrite.c>
    RewriteEngine On
    
    # Permitir acceso directo a archivos estáticos
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ - [L]
</IfModule>

# Headers para Service Worker
<IfModule mod_headers.c>
    # Service Worker - NO cachear y permitir scope amplio
    <FilesMatch "sw\.js$">
        Header set Cache-Control "no-cache, no-store, must-revalidate"
        Header set Pragma "no-cache"
        Header set Expires "0"
        Header set Service-Worker-Allowed "/documentos/"
        Header set Content-Type "application/javascript; charset=utf-8"
    </FilesMatch>
    
    # Manifest - NO cachear
    <FilesMatch "manifest\.json$">
        Header set Cache-Control "no-cache, no-store, must-revalidate"
        Header set Pragma "no-cache"
        Header set Expires "0"
        Header set Content-Type "application/manifest+json; charset=utf-8"
    </FilesMatch>
    
    # CORS para API de Push Notifications
    <FilesMatch "\.(js|json)$">
        Header set Access-Control-Allow-Origin "*"
        Header set Access-Control-Allow-Methods "GET, POST, OPTIONS"
        Header set Access-Control-Allow-Headers "Content-Type, Authorization, X-Requested-With"
    </FilesMatch>
    
    # Headers de seguridad
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-XSS-Protection "1; mode=block"
</IfModule>

# MIME Types específicos para PWA
<IfModule mod_mime.c>
    # Service Worker
    AddType application/javascript .js
    AddType application/javascript sw.js
    
    # Manifest
    AddType application/manifest+json .json
    AddType application/manifest+json manifest.json
    
    # Imágenes PWA
    AddType image/png .png
    AddType image/jpeg .jpg
    AddType image/jpeg .jpeg
    AddType image/svg+xml .svg
    AddType image/webp .webp
    AddType image/x-icon .ico
</IfModule>

# Cache Control para assets PWA
<IfModule mod_expires.c>
    ExpiresActive On
    
    # Iconos PWA - cachear por 1 año
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/x-icon "access plus 1 year"
    
    # CSS y JS - cachear por 1 mes
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
    
    # Manifest y Service Worker - NO cachear
    ExpiresByType application/manifest+json "access plus 0 seconds"
    <FilesMatch "sw\.js$">
        ExpiresActive Off
    </FilesMatch>
</IfModule>

# Compresión para assets
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE text/javascript
    AddOutputFilterByType DEFLATE application/json
</IfModule>

# Prevenir acceso directo a archivos sensibles
<FilesMatch "\.(env|log|ini|conf)$">
    Require all denied
</FilesMatch>

