# Trajektur — Foto-Review-Verzeichnis
# Gleiche Grundhaltung wie das Audio-Review: keine Inline-Bloecke in
# index.html, deshalb reicht 'self'. Wird diese Datei vergessen, erbt das
# Verzeichnis die CSP der Hauptseite und die Seite erscheint unformatiert.
Options -Indexes -MultiViews
DirectoryIndex index.html
<IfModule mod_headers.c>
  Header always set Content-Security-Policy "default-src 'none'; script-src 'self'; style-src 'self'; font-src 'self'; img-src 'self' data:; connect-src 'self'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'"
  Header always set X-Robots-Tag "noindex, nofollow, noarchive, noimageindex, nosnippet"
  Header always set Referrer-Policy "no-referrer"
  Header always set X-Content-Type-Options "nosniff"
  Header always set Permissions-Policy "geolocation=(), camera=(), microphone=(), interest-cohort=()"
  Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
  Header always set Cache-Control "private, no-store"
</IfModule>
# Bilder und ZIP duerfen kurz im Browser-Cache bleiben — die Originale sind
# gross, und beim Blaettern in der Galerie soll nichts doppelt geladen werden.
# "private" bleibt: kein Zwischenspeichern auf Proxys.
<IfModule mod_headers.c>
  <FilesMatch "\.(jpg|jpeg|zip)$">
    Header always set Cache-Control "private, max-age=86400"
  </FilesMatch>
  <FilesMatch "\.zip$">
    Header always set Content-Disposition "attachment"
  </FilesMatch>
</IfModule>
AddType image/jpeg .jpg .jpeg
AddType application/zip .zip
AddType application/json .json
<FilesMatch "\.(md|ps1|sh|bak)$">
  Require all denied
</FilesMatch>
ErrorDocument 403 "Kein Zugang."
ErrorDocument 404 "Nicht vorhanden."
