# Nur *.php im Webroot, assets/ und versionierte Rechtstexte sollen direkt
# aufrufbar sein. Interne
# Verzeichnisse (Sessions, Mail-Logs, Migrationen, CLI-Skripte, Doku,
# App-Bausteine, Legacy-DB-Shim, Vendor-Bibliotheken), die Git-Metadaten und
# Konfigurationsdateien mit Zugangsdaten duerfen nicht direkt per URL
# abrufbar sein.
RewriteEngine On
# Alles auf HTTPS. Session-Cookies werden nur ueber HTTPS mit dem
# secure-Flag gesetzt (app_start_session()), und HSTS wird ebenfalls nur
# dann gesendet - ohne Redirect kaeme ein Nutzer per http an und bekaeme
# eine Session ohne secure-Flag. X-Forwarded-Proto deckt den Fall ab,
# dass Apache hinter dem Plesk-nginx-Proxy laeuft.
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_URI} ^/(var|database|scripts|docs|app|lib)/ [NC]
RewriteRule ^ - [F]
# Rechtstexte sind als speicherbare Textfassung absichtlich öffentlich;
# alle anderen/versehentlich abgelegten Dateien im Ordner bleiben gesperrt.
RewriteCond %{REQUEST_URI} ^/legal/ [NC]
RewriteCond %{REQUEST_URI} !^/legal/(agb|datenschutz|avv|widerruf)-[0-9]{4}-[0-9]{2}-[0-9]{2}\.txt$ [NC]
RewriteRule ^ - [F]
# Vendor-Verzeichnisse werden ausschliesslich serverseitig eingebunden
# (TCPDF ueber exportKaffeeliste.php); direkte URL-Aufrufe ihrer PHP-
# Dateien sind nie erwuenscht.
RewriteCond %{REQUEST_URI} ^/(TCPDF|PHPMailer|DataTables)/ [NC]
RewriteRule ^ - [F]
# .git waere sonst komplett herunterladbar, falls es je mit deployt wird.
RewriteCond %{REQUEST_URI} ^/\.(git|claude|local)(/|$) [NC]
RewriteRule ^ - [F]
# Konventionelle /sitemap.xml auf die dynamische, host-korrekte Sitemap.
RewriteRule ^sitemap\.xml$ sitemap.php [L]
# Konfigurations- und Deploy-Dateien mit Zugangsdaten. sync_config.jsonc
# enthaelt das FTP-Passwort im Klartext und darf niemals ausgeliefert werden,
# auch nicht versehentlich mit hochgeladen.
Require all denied
Order allow,deny
Deny from all
Require all denied
Order allow,deny
Deny from all