Files
geograsim/App/.htaccess
T

55 lines
2.1 KiB
ApacheConf

# Sensible Dateien niemals ausliefern (Defense-in-Depth), auch wenn sie im
# Docroot liegen und die -f-Regel unten sie sonst direkt serviert.
<FilesMatch "^\.env">
Require all denied
</FilesMatch>
<FilesMatch "\.(sh|sql|bak)$">
Require all denied
</FilesMatch>
# Backend-Editor-UI (statisch) nicht direkt ausliefern — nur über die
# admin-geschützte Route /stadt-editor (pages/stadt-editor.php) erreichbar.
<Files "stadt-editor.html">
Require all denied
</Files>
RewriteEngine On
# Kein RewriteBase — Apache nutzt den Request-Pfad automatisch.
# Funktioniert fuer alle Deploy-Ziele:
# localhost/geograsim/App/ (lokal, XAMPP)
# staatsgeheimnis.at/geograsim/ (Subpfad-Prod)
# geograsim.at/ (eigene Domain-Prod)
# Mit hart gesetztem RewriteBase gab es auf der eigenen Domain einen
# Endlos-Redirect-Loop (AH00124: 10 internal redirects).
# Statische Dateien direkt ausliefern
RewriteRule ^dist/ - [L]
RewriteRule ^assets/ - [L]
RewriteRule ^node_modules/ - [L]
RewriteRule ^src/ - [L]
# Bestehende Dateien/Ordner direkt ausliefern
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule . - [L]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [L]
# Header-Migration (N.6.2): alte .html-URLs auf umbenannte .php-Versionen umlenken.
# Greift nur, wenn .html nicht existiert UND .php-Variante vorhanden ist.
# Die obigen REQUEST_FILENAME -f / -d Regeln haben schon abgebrochen, wenn
# die .html-Datei real noch da liegt — hier kommt also nur an, was nicht (mehr) existiert.
RewriteCond %{REQUEST_FILENAME} ^(.+)\.html$
RewriteCond %1.php -f
RewriteRule ^(.+?)\.html$ $1.php [L]
# Extension-less URLs auf .php auflösen, falls .php-Datei existiert.
# Beispiel: /kontakt -> /kontakt.php (sofern kontakt.php existiert und
# kein gleichnamiger Ordner/File). Vorher hat das implizit MultiViews
# über alte .html-Files gemacht — seit der .html→.php-Migration fällt
# das weg, also brauchen wir hier eine explizite Regel.
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+)$ $1.php [L]
# Alles andere -> Front Controller
RewriteRule ^(.*)$ index.php [QSA,L]