dedlfix: Website mehrsprachig

Beitrag lesen

Tach!

alle rewrites finden auf PHP-seite statt, es wird also alles erstmal krude auf die index.php weitergeleitet
RewriteRule ^(.*)$ index.php

Ja, aber. Soll wirklich alles umgeschrieben werden, auch wenn es vorhandene Dateien betrifft? Üblicherweise möchte man die ausschließen und setzt diese beiden Bedingungen davor.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Reguläre Ausdrücke sind gierig, so dass man bei .* kein ^ oder $ braucht, .* schnappt sich alles von vorn bis hinten. Selbst die Klammern kann man sich schenken, wenn man die URL nicht als Parameter an index.php hängen möchte. Und das braucht man nicht, weil die bereits im Script über $_SERVER['REQUEST_URI'] verfügbar ist.

Seit Apache 2.2.16 braucht man eigentlich alle drei Direktiven nicht mehr, denn dann steht FallbackResource zur Verfügung.

FallbackResource /index.php

Allerdings gibt es Einsatzfälle, da kommt FallbackResource zu spät. Es wird nämlich erst am Ende des Verarbeitungsprozesses aufgerufen während das Rewriting eher stattfindet. Leitet man zum Beispiel alles .php auf einen (F)CGI-Handler, dann übernimmt der die Verarbeitung auch bei nicht existierenden Dateien und FallbackResource kommt nicht mehr zum Zuge.

dedlfix.