Im Gegensatz zum ursprünglichen Route kann RewriteRouter auch in Unterverzeichnissen
verwendet werden - deine Basis URL wird automatisch erkannt und entsprechend gesetzt. Zum
Beispiel: wenn sich deine index.php
in einem Unterverzeichnis mit Namen
/projects/myapp/index.php
befindet, wird die Rewrite Basis (die Basis URL) auf
/projects/myapp
gesetzt. Dieser String wird dann vom Anfang des Pfads entfernt,
bevor die Treffer für die Routen ermittelt werden. Dies befreit dich von der Notwendigkeit,
ihn jeder deiner Routen voranzustellen. Die Route 'user/:username'
passt auf
URLs wie http://localhost/projects/myapp/user/martel
und
http://example.com/user/martel
.
![]() |
Anmerkung |
---|---|
Die automatisches Rewrite Basis beachtet die Groß- und Kleinschreibung, stell also sicher, dass deine URL auch auf den Namen eines Unterverzeichnis im Dateisystem passt (gilt sogar auf Windows Rechnern). Wenn es nicht passt, erhälst du eine noRoute Aktion. |
Sollte die Rewrite Basis falsch erkannt werden, kannst du sie mit Hilfe der
setRewriteBase
Methode der RewriteRouter
Klasse mit deinem eigenen
Basispfad überschreiben.
$router->setRewriteBase('/projects/myapp');
![]() |
Anmerkung |
---|---|
In den meisten Fällen wird dieser Schritt nicht notwendig sein und es wird davon abgeraten, da es eine weitere Konfigurationsvariable einführt, die geändert werden muss, wenn man den Code in eine andere Verzeichniskonfiguration verschiebt. |