# =============================================================
#  urlshort-qr-gen – Apache-Konfiguration fuer den Webroot
# =============================================================

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Falls die Anwendung in einem Unterverzeichnis liegt, ermittelt
    # Apache die Basis in der Regel selbst. Bei Problemen hier setzen:
    # RewriteBase /

    # Vorhandene Dateien und Verzeichnisse direkt ausliefern
    # (assets/, favicon.ico, ...).
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]

    # Alles Uebrige an den Front Controller.
    RewriteRule ^ index.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    # Ohne mod_rewrite funktionieren nur Aufrufe mit index.php/... –
    # bitte mod_rewrite beim Hoster aktivieren.
    ErrorDocument 404 /index.php
</IfModule>

# Authorization-Header durchreichen (manche CGI/FastCGI-Setups)
<IfModule mod_setenvif.c>
    SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
</IfModule>

# Verzeichnislisting abschalten
Options -Indexes

# Standard-Zeichensatz
AddDefaultCharset UTF-8

# Sicherheits-Header fuer statische Dateien.
# "setifempty" statt "set", weil die Anwendung dieselben Header fuer
# PHP-Antworten selbst setzt - sonst wuerden sie doppelt ausgeliefert.
<IfModule mod_headers.c>
    Header setifempty X-Content-Type-Options "nosniff"
    Header setifempty X-Frame-Options "DENY"
    Header setifempty Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>

# Statische Assets duerfen gecacht werden
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css "access plus 7 days"
    ExpiresByType application/javascript "access plus 7 days"
    ExpiresByType image/svg+xml "access plus 7 days"
</IfModule>

# Kein Zugriff auf Konfigurations- und Versionsdateien
<FilesMatch "^(\.env.*|composer\.(json|lock)|.*\.md|.*\.ya?ml|Dockerfile)$">
    Require all denied
</FilesMatch>
