# Disable directory listing
Options -Indexes
# Default directory index
DirectoryIndex index.html
# Serve index.html for SPA client-side routing (if file/dir doesn't exist)
RewriteEngine On
RewriteBase /
# If the request is for an existing file or directory, serve it
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# Otherwise rewrite to index.html
RewriteRule ^ index.html [L]
# Optional: small caching hints for static assets
ExpiresActive On
ExpiresByType text/css "access plus 1 week"
# Keep JS cache short during development to avoid stale scripts on mobile
ExpiresByType application/javascript "access plus 60 seconds"
ExpiresByType image/* "access plus 1 week"
# Add Cache-Control headers for more precise control
Header set Cache-Control "max-age=60, public"
Header set Cache-Control "max-age=604800, public"
Header set Cache-Control "max-age=604800, public"
# Prevent serving hidden files (like .env, .git)
Require all denied