diff --git a/public/.htaccess b/public/.htaccess deleted file mode 100644 index a3b3c3c..0000000 --- a/public/.htaccess +++ /dev/null @@ -1,75 +0,0 @@ -# ------------------------------------------------------------ -# Custom 404-Seite (Astro Static Build) -# ------------------------------------------------------------ -# Wenn eine URL nicht existiert, soll Apache unsere Astro-404 ausliefern -# (statt der Hosting-Standard-Fehlerseite). -# -# Hinweis: Astro baut `src/pages/404.astro` standardmäßig als `dist/404/index.html`. -ErrorDocument 404 /404.html - -# ------------------------------------------------------------ -# Security Header Baseline (nur wenn mod_headers verfuegbar) -# ------------------------------------------------------------ -# Falls dein Hosting keine Header via .htaccess erlaubt: -# Bitte die gleichen Header im Hosting-Panel (Apache/Nginx Header) setzen. - - # MIME-Sniffing verhindern (Browser soll Content-Type nicht "erraten") - Header always set X-Content-Type-Options "nosniff" - - # Referrer auf ein sinnvolles Minimum reduzieren (interne Details schuetzen) - Header always set Referrer-Policy "strict-origin-when-cross-origin" - - # Browser-Features standardmaessig sperren, nur Noetiges erlaubt. - # Hinweis: nur breit unterstuetzte Direktiven nutzen, damit keine Console-Warnungen entstehen. - Header always set Permissions-Policy "accelerometer=(), autoplay=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(), usb=(), fullscreen=(self)" - - # CSP zunaechst nur beobachten (Report-Only), damit nichts live blockiert. - # Quellen passend zur Seite: lokale Assets/Fonts, data:-URIs und Minecraft-Status-API. - # Hinweis: `upgrade-insecure-requests` wirkt nur bei erzwungener CSP, nicht bei Report-Only. - Header always set Content-Security-Policy-Report-Only "default-src 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'self'; form-action 'self'; img-src 'self' data: https:; font-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'; connect-src 'self' https://api.mcsrvstat.us" - - -# ------------------------------------------------------------ -# Caching fuer statische Assets (Performance auf Shared Hosting) -# ------------------------------------------------------------ -# Ziel: -# - Fingerprinted Assets (js/css/fonts/bilder) lange cachen. -# - HTML bewusst kurz halten, damit Deploy-Updates schnell sichtbar sind. -# -# Hinweis: -# `immutable` ist ideal fuer versionierte Dateinamen (z. B. app.abc123.js). -# Falls ein Asset ohne Versionshash ersetzt wird, kann es bis TTL-Ende gecacht bleiben. - - ExpiresActive On - - # Sinnvoller Fallback fuer nicht explizit gematchte Typen. - ExpiresDefault "access plus 1 hour" - - # HTML moeglichst kurz cachen, damit neue Deploys schnell ankommen. - ExpiresByType text/html "access plus 5 minutes" - - # Lange TTL fuer statische Assets. - ExpiresByType text/css "access plus 1 year" - ExpiresByType application/javascript "access plus 1 year" - ExpiresByType text/javascript "access plus 1 year" - ExpiresByType font/woff2 "access plus 1 year" - ExpiresByType image/png "access plus 1 year" - ExpiresByType image/webp "access plus 1 year" - ExpiresByType image/svg+xml "access plus 1 year" - - # Icons sind oft nicht versioniert: deshalb moderat statt extrem lang. - ExpiresByType image/x-icon "access plus 30 days" - ExpiresByType image/vnd.microsoft.icon "access plus 30 days" - - - - # Fuer versionierte Assets Browser-Revalidierung vermeiden. - - Header set Cache-Control "public, max-age=31536000, immutable" - - - # HTML soll bei Navigationen regelmaessig revalidiert werden. - - Header set Cache-Control "no-cache, must-revalidate" - -