# public/.htaccess
#
# Schöne URLs (Pretty Permalinks) - schreibt /mein-artikel/ intern zu
# index.php?pretty_path=mein-artikel um. Die eigentliche Auflösung (ist das
# ein Menüpunkt-Alias oder ein Content-Slug?) passiert früh in index.php
# selbst (siehe dortiger Kommentar) - hier wird bewusst NICHT zwischen
# beiden unterschieden, das hält die Regel simpel.
#
# WICHTIG: echte Dateien/Ordner (Bilder, CSS, andere .php-Einstiegspunkte
# wie admin.php, stats.php, ...) werden von der Regel automatisch NICHT
# angefasst (die beiden RewriteCond-Zeilen sorgen dafür) - alle bisherigen
# ?p=/?c=-Links funktionieren also unverändert weiter, das ist rein additiv.

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Gezielte hübsche URLs für einzelne Erweiterungs-Einstiegspunkte -
    # paste.php/blog.php sind echte Dateien und werden von der generischen
    # Regel weiter unten bewusst NICHT angefasst (siehe deren Kommentar).
    # QSA erhält dabei bestehende Query-Parameter (z.B. paste.php?token=X).
    RewriteRule ^nopaste/?$ paste.php [QSA,L]
    RewriteRule ^blog/?$ blog.php [QSA,L]
    RewriteRule ^kontakt/?$ contact.php [QSA,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([a-zA-Z0-9\-_/]+)/?$ index.php?pretty_path=$1 [QSA,L]
</IfModule>

# Kern-Ordner (falls versehentlich unterhalb von public/ gelandet) niemals
# öffentlich ausliefern - siehe docs/REFERENCE.md, public/ MUSS das
# Document Root sein, core/contents/templates/etc. liegen normalerweise
# eine Ebene darüber und sind dadurch ohnehin nicht erreichbar. Diese
# Regeln sind eine zusätzliche Absicherung für den Fall einer falsch
# konfigurierten Installation.
<IfModule mod_alias.c>
    RedirectMatch 404 ^/(core|contents|templates|pagetypes|modules|config|sql)/
</IfModule>
