# =============================================================
#  urlshort-qr-gen – .htaccess fuer das Projekt-Stammverzeichnis
#
#  Diese Datei wird NUR gebraucht, wenn beim Hoster der Webroot
#  nicht auf /public gelegt werden kann (Shared-Hosting-Variante B
#  in der README). Dann liegt das komplette Projekt im Webroot und
#  diese Regeln leiten intern nach public/ weiter – gleichzeitig
#  werden alle uebrigen Ordner gesperrt.
#
#  Liegt der Webroot korrekt auf /public, ist diese Datei
#  wirkungslos (sie liegt dann ausserhalb des Webroots).
# =============================================================

Options -Indexes
AddDefaultCharset UTF-8

<IfModule mod_rewrite.c>
    RewriteEngine On

    # 1) Nicht-oeffentliche Verzeichnisse hart sperren.
    RewriteRule ^(src|templates|migrations|tests|docker|data|vendor|\.git)(/|$) - [F,L]

    # 2) Konfigurations- und Projektdateien sperren.
    RewriteRule ^(\.env|composer\.(json|lock)|phpunit\.xml|Dockerfile|docker-compose\.ya?ml|.*\.md)$ - [F,L]

    # 3) Bereits nach public/ aufgeloeste Anfragen nicht erneut umschreiben.
    RewriteCond %{REQUEST_URI} !^/?public/
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

# Zusaetzlicher Schutz, falls mod_rewrite fehlt.
<FilesMatch "^(\.env.*|composer\.(json|lock)|phpunit\.xml|.*\.md|Dockerfile)$">
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order allow,deny
        Deny from all
    </IfModule>
</FilesMatch>
