dedlfix: .htaccess Problem

Beitrag lesen

Tach!

Die Reihenfolge der Regeln spielt eine Rolle („The order in which these rules are defined is important - this is the order in which they will be applied at run-time.“), die URI "Lindau-am-Bodensee" erfüllt bereits die erste RewriteRule, weil jede URI diese erfüllt und die zusätzlichen RewriteCond dafür vermutlich auch, d.h. es gibt keine Datei oder Ordner diesen Namens.

Wenn jede URL sie erfüllte, gäbe es eine Endlosschleife.

Also wird dort die URI auf "index.php?site=Lindau-am-Bodensee" umgeschrieben und da das L-Flag gesetzt ist, werden keine weiteren RewriteRule berücksichtigt (das würde auch nichts ändern, da diese ja nicht mehr matchen würden).

Das L-Flag gilt nur für diesen Durchlauf. Nach Ende eines Rewrite-Prozess, der nicht auf einen Redirect hinauslief - den ja der Browser ausführt, und somit als ganz neuer Request wieder reinkommt, so er nicht sonstwohin geschickt wird - wird mit der umgeschriebenen URL erneut die interne Abarbeitung gestartet, da sie ja nun ein anderes Ziel ist und auch auf andere Orte zeigen könnte.

Jedenfalls kommt der Request wieder oben an und stellt nun fest, dass die index.php (hoffentlich) existiert. Die erste Regel wird damit übergangen. Die Weiterleitung auf HTTPS könnte notwendig sein. Dann kommt der Request vom Browser gestellt erneut rein, die erste Regel trifft nicht zu, die zweite auch nicht, und die dritte und vierte ebenfalls nicht, weil index.php nicht dazu passt. Wenn HTTPS on war - oder genauer, wenn der Request auf dem Port 443 reinkommt, was nicht zwangsläufig bedeutet, dass er auch HTTPS ist - dann treffen die Regeln ebenfalls nicht zu.

Abgesehen von dieser Ergänzung bleibt die Lösung, dass die Reihenfolge beachtet werden muss.

dedlfix.