Über diesen Router
Zur Dokumentation für Webdesigner
Aufgaben des Routers
- Leitet alle Anfragen zentral über
index.php. - Entscheidet anhand der
routes.json, welche Datei ausgeliefert werden soll. - Unterstützt sowohl HTML- als auch PHP-Seiten.
- Bietet die Möglichkeit, Seiten mit einem geheimen „Secret“-Code zu schützen.
- Zählt Besucher und Seitenaufrufe DSGVO-konform über
counter.json.
Wichtige Funktionen
sendResponse(): Gibt eine Datei mit HTTP-Status zurück (z. B. 200 oder 404).resolvePage(): Sucht eine Datei mit erlaubten Endungen (HTML oder PHP) und prüft den Pfad auf Sicherheit.trackVisit(): Schreibt Besucher- und Aufrufzahlen in eine JSON-Datei, ohne personenbezogene Daten zu speichern.
Ablauf einer Anfrage
- Die URL wird eingelesen und in
$pathgespeichert. - Der Router prüft:
- Passt der Pfad direkt auf eine Route?
- Oder besteht die URL aus einem Secret + einer Route (z. B.
/123456/admin)?
- Falls die Route nicht existiert oder das Secret falsch ist →
404.html. - Wurde eine Datei gefunden, prüft
resolvePage(), ob sie innerhalb von/html/liegt. - Die Datei wird ausgeliefert:
- PHP → mit
includeausgeführt. - HTML → direkt mit
readfile()gesendet.
- PHP → mit
trackVisit()zählt den Aufruf.
Sicherheitsaspekte
- Pfadprüfung:
realpath()undstr_starts_with()verhindern Directory-Traversal-Angriffe. - 404-Fallback: Nicht existierende oder geschützte Seiten liefern immer eine 404-Seite zurück.
- Session-Handling: Session wird genutzt, um Besucher pro Browserlauf nur einmal zu zählen.
- .htaccess:
- Leitet alle Anfragen auf
index.php, wenn keine Datei gefunden wird. - Verhindert Zugriff auf
.json-Dateien (niemand kann deine Routen oder Zähler direkt aufrufen). - Blockiert das Verzeichnis
/html/vor direktem Zugriff – Dateien sind nur über den Router erreichbar. - Setzt Sicherheitsheader (HSTS, CSP, COOP, usw.).
- Optimiert Performance mit Browser-Caching und Kompression.
- Leitet alle Anfragen auf
Vorteile dieser Architektur
- Einheitliches Routing für HTML- und PHP-Seiten.
- Einfache Erweiterung durch Bearbeiten der
routes.json. - Freie und flexible Nutzung von HTML und PHP: Inhalte können statisch (HTML) oder dynamisch (PHP) umgesetzt werden, ohne den Router ändern zu müssen.
- Sicherheit durch Zugriffsbeschränkung in Kombination mit .htaccess.
- DSGVO-konformer Besucherzähler ohne externe Dienste.
- Möglichkeit, geheime oder Admin-Seiten nur mit Secret und/oder Login verfügbar zu machen.
Fazit
Der Router bildet das Herzstück deines CMS. Durch die Kombination aus zentralem Routing, Secret-Mechanismus, Besucherzähler und den Schutzmaßnahmen in der .htaccess ist das System sicher und flexibel. Entwickler müssen nur die routes.json pflegen und Inhalte im /html/-Ordner bereitstellen. Die freie Wahl zwischen HTML und PHP macht den Router besonders flexibel. Die .htaccess sorgt dafür, dass keine Dateien direkt aufgerufen werden können, sondern alles kontrolliert über den Router läuft – eine solide Grundlage für ein schlankes, sicheres CMS.