Hi,
ich muss bei der Regel folgendes angeben (flags lass ich grad absichtlich weg):
RewriteRule ^([a-zA-Z0-9]+)$ index.php?page=$1
ich möchte nun aber eigentlich
RewriteRule ^(.+)$ index.php?page=$1
nur funktioniert das nicht, denn da bekomme ich immer
page=index.phpWieso ist das so
Weil, nachdem das Umschreiben stattgefunden hat, der Apache so tut, als ob das gerade Umgeschriebene ein neu herinkommender Request wäre - und auf diesen dann wieder erneut das Regelwerk anwendet.
In deinem Falle heisst das, du rufst localhost/bla auf.
Das wird jetzt (in beiden Fällen) in index.php?page=bla umgeschrieben.
Auf geht's, neue Runde: Der heringekommene Request lautet jetzt /index.php?page=bla
^(.+)$ "matched" auf index.php - also wird dieser Wert, so wie es deine zweite RewriteRule angibt, auf index.php?page=index.php umgeschrieben.
Bei der ersten Regel hingegen matched ^([a-zA-Z0-9]+)$ nicht auf index.php - weil es den Punkt nicht berücksichtigt.
und wie kann man das ändern?
Mit einer vorgeschalteten RewriteCond, die abprüft, ob das angeforderte einer physisch existenten Datei (oder auch einem Verzeichnis) entspricht - und dann die RewriteRule nicht zur Anwendung kommen lässt - siehe Doku.
MfG ChrisB
Light travels faster than sound - that's why most people appear bright until you hear them speak.