Mod Rewrite Problem/Frage
Severus
- webserver
Hallo Leute,
ich hab eine kleines problem mit modRewrite
ich möchte, dass bei der eingabe von
http://localhost/bla
auf:
index.php?page=bla
umgeleitet wird.
Mein problem ist nun folgendes:
Es soll:
http://localhost/bla?test=test
auf:
index.php?page=bla&test=test
umgeleitet werden.
Ich hoffe jemand kann mit helfen
LG
Severus.
Hi,
ich hab eine kleines problem mit modRewrite
ich möchte, dass bei der eingabe von
http://localhost/bla
auf:
index.php?page=bla
umgeleitet wird.Mein problem ist nun folgendes:
OK, obiges hast du also schon.
Es soll:
http://localhost/bla?test=test
auf:
index.php?page=bla&test=test
umgeleitet werden.
Also willst du den originalen Querystring nach dem Umschreiben wieder anhängen lassen. Dafür gibt es das Flag QSA (Query String Append).
MfG ChrisB
Ah sehr gut danke das QSA hilft mal.
Jetzt hab ich aber noch eine kleine frage
ich möchte, dass bei der eingabe von
http://localhost/bla
auf:
index.php?page=bla
umgeleitet wird.
Das funktioniert bereits, bis auf eine ausnahme
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.php
Wieso ist das so und wie kann man das ändern?
Lg Severus
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