Hallo dedlfix,
mod_rewrite stellt aufgrund der internen Arbeitsweise des Apachen einen weiteren Request mit dem umgeschriebenen Ergebnis. Dieser Request durchläuft ebenfalls die Per-Verzeichnis-Konfigurationsanweisungen, also auch deine RewriteRules. Es wird also erneut umgeschrieben und das Spiel geht von vorn los. Diesmal dürfte aber mod_rewrite bemerkt haben, dass es schon mal umgeschrieben hat und es nun ignorieren, was aber schon zu spät ist. Den genauen Ablauf erfährst du, wenn du dir das RewriteLog anschaust, falls du darauf Zugriff hast und es eingeschaltet wurde.
Heilig's Blechle!!! Das macht Sinn. Wäre ich wohl nie drauf gekommen ...
Abhelfen kannst du dir mit zwei RewriteCond(itions), die nur dann ein Umschreiben zulassen, wenn der Request auf keine existierende Datei und kein existierendes Verzeichnis passt.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9-_]*).php$ index.php?page=$1&end=php [L]
Jetzt funktionieren auch meine ursprünglichen Regeln:
RewriteRule ^([a-zA-Z0-9-_]*).(html|php|htm|xhtml)$ index.php?page=$1&end=$2 [L]
RewriteRule ^([a-zA-Z0-9-_]*) index.php?page=$1 [L]
Nur beim Aufruf von "index.php" bzw. der Domain ohne Datei- oder sonstiger Angabe sind die Parmeter jetzt ja trotzdem noch leer. Das ist nicht 100% optimal, läßt sich im Skript aber abfangen ...
1000 Dank!
Grüße, Till