# ============================================================
# ZUGANGSDATEN SPERREN
# ------------------------------------------------------------
# .env enthaelt Datenbank-Host, -Name, -Benutzer und -Passwort im Klartext und
# liegt im Web-Wurzelverzeichnis. Die SEO-Weiche unten greift fuer sie NICHT
# (RewriteCond !-f), weil die Datei existiert – Apache lieferte sie also direkt
# aus: ein einziger Aufruf von /.env genuegte. Apache sperrt von Haus aus nur
# .ht*-Dateien. Gleich mit gesperrt: Sicherungen und Versionsdaten.
# ============================================================
<FilesMatch "^(\.env|\.env\..*|\.git.*|composer\.(json|lock)|.*\.sql|.*\.bak|.*\.log|.*\.src\.js|.*\.md|\.user\.ini)$">
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order allow,deny
        Deny from all
    </IfModule>
</FilesMatch>

<IfModule mod_headers.c>
    # Der SHOP darf bewusst in fremde Seiten eingebettet werden — das ist die
    # Embed-Funktion. Fuer /admin gilt das ausdruecklich NICHT; die Ausnahme
    # wird dort in admin/.htaccess wieder zurueckgenommen.
    Header always unset X-Frame-Options
    Header always set Content-Security-Policy "frame-ancestors *"
    Header always set X-Content-Type-Options "nosniff"
</IfModule>

# Verzeichnis-Listing abschalten. Ohne das listet ein Server mit aktivem
# "Indexes" den Inhalt jedes Ordners ohne index-Datei auf — betroffen waeren
# unter anderem media/, custom/ und die Belege.
Options -Indexes

# SEO-URLs: nur nicht existierende Pfade auf den Front-Controller leiten.
# Existierende Dateien/Verzeichnisse (product.php, category.php, /admin, /ajax,
# /css, /js, /media …) werden weiterhin DIREKT bedient -> alte AJAX-URLs bleiben
# unveraendert funktionsfaehig.
# Startseite (Verzeichnis-Anfrage) ueber den Front-Controller ausliefern,
# damit auch "/" Meta-Tags/Route erhaelt. index.php entscheidet selbst, ob es
# (bei inaktiven SEO-URLs) 1:1 die alte index.html-Shell zurueckgibt.
DirectoryIndex index.php index.html

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Der Kern liegt unter vendor/neofire/{core,public,admin} und darf NIE
    # direkt ueber die Adresse erreichbar sein: einzeln aufgerufen laufen diese
    # Dateien ohne die Konstanten NF_ROOT/NF_CORE/… und ohne die Pruefungen des
    # Aufloesers. Vorher war das kein Thema - unter vendor/ lagen nur
    # Composer-Abhaengigkeiten.
    RewriteRule ^vendor/ - [F,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ index.php [L]
</IfModule>