Mod_Rewrite über eine Datei
Eigentlich jedes Framework dass das MVC Konzept abbildet, schickt jeden Request der am Webserver aufschlägt über eine zentrale Datei. Meist ist das die index.php die sich im Webroot befindet. Dies wird mit Hilfe des (gefürchteten) Apache Moduls “Mod Rewrite” realisiert und da “Mod Rewrite” lediglich ein Regelwerk vorgibt, und es dazu noch Reguläre Ausdrücke unterstützt, gibt es gibt verschiedene Ansätze wie das erreicht werden kann. Ich möchte hier den Ansatz zeigen der meiner Meinung nach der flexibelste ist.
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
Die Regel RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] besagt: “Schicke einfach jeden Request auf die index.php”. Die erste Rewrite Condition RewriteCond %{REQUEST_FILENAME} !-d aber sagt: “Gilt aber nicht wenn das Verzeichnis tatsächlich existiert”. Die zweite Rewrite Condition RewriteCond %{REQUEST_FILENAME} !-f fügt noch hinzu: “Und auch nicht wenn die Datei tatsächlich existiert”. Somit werden also alle “virtuellen” Requests auf die index.php geleitet, aber vorhandene Resourcen wie Bilder, CSS, JavaScript-Dateien etc. werden nicht über das Framework geschickt.
Andere Ansätze funktionieren natürlich auch, aber bei diesem Ansatz ist es sehr einfach externe Scripte, die nicht zum Framework gehören, einzubinden. Im besten Fall legt man Sie einfach im Webroot ab.
In diesem Zusammenhang:
- CakePHP – Ein Template in eine Variable rendern Oft genug kommt man als PHP Programmierer in die Situation...
Danke!
Genau das habe ich gesucht!
MfG
Simon