Redirect Pregmatch-Frage: Wie String in neue URL Übernehmen?
Kalle2012
- webserver
Hallo,
ich habe viele URLs nach dem Muster example.org/test_123456
Nun möchte ich die obige Adresse weiterleiten auf
example.org/index.php?search=123456
ich habe bisher leider kein Tutorial gefunden, in dem ich geschnallt habe, wie ich abfrage ob die letzten 6 Zeichen Zahlen sind und dann die Rule danach ausrichte.
Kann mir da einer bitte helfen?
Danke, Kalle
Hi,
ich habe bisher leider kein Tutorial gefunden, in dem ich geschnallt habe, wie ich abfrage ob die letzten 6 Zeichen Zahlen sind und dann die Rule danach ausrichte.
du meinst Ziffern, nicht Zahlen.
Kann mir da einer bitte helfen?
Formuliere es anders: Du suchst ein Regex, der auf ein Muster aus mindestens(?) sechs Ziffern, unmittelbar gefolgt vom Stringende passt: \d{6,}$
Da du den gefundenen Ausdruck auch noch weiterverwenden musst, solltest du ihn "aufsammeln", indem du das Muster \d{6,} einklammerst.
So long,
Martin
Danke schon mal.
So lüppt es nicht:
Denke mal, dass da aber noch ein Fehler drin ist...
Noch nen effektiven Tipp?
RewriteRule ^(\d{6})/$ http://www.example.org/index.php?$1 [R=301,L]
gruß Kalle
Hi,
ich habe bisher leider kein Tutorial gefunden, in dem ich geschnallt habe, wie ich abfrage ob die letzten 6 Zeichen Zahlen sind und dann die Rule danach ausrichte.
du meinst Ziffern, nicht Zahlen.
Kann mir da einer bitte helfen?
Formuliere es anders: Du suchst ein Regex, der auf ein Muster aus mindestens(?) sechs Ziffern, unmittelbar gefolgt vom Stringende passt: \d{6,}$
Da du den gefundenen Ausdruck auch noch weiterverwenden musst, solltest du ihn "aufsammeln", indem du das Muster \d{6,} einklammerst.So long,
Martin
Denke mal, dass da aber noch ein Fehler drin ist...
RewriteRule ^(\d{6})/$ http://www.example.org/index.php?$1 [R=301,L]
Das passt aber auch nicht zu Deiner Frage
Du willst zu: von:
test_123456 also test_[6 Ziffern]
zu:
example.org/index.php?search=123456
RewriteRule ^test_(\d{6})$ index.php?search=$1 [L]
wäre besser wobei ich aber glaube, Du willst eher:
RewriteRule ^test_(\d+)$ index.php?search=$1 [L]
(für alle Aufrufe einer Ressource einer Ressource test_(mindestens 1 Ziffer) tu mal so, als wäre index.php?search=(mindestens 1 Ziffer) aufgerufen worden.)
Was Du gemacht hast:
^ :: Beginnt die von Server angeforderte Resource mit
(\d{6}) :: genau 6 Ziffern, die zu merken sind
dann schicke dem Browser die Mitteilung, dass die Ressource dauerhaft verzogen ist [R=301], dass keine weitere Regel beachtet werden soll [L] und schicke ihn zu http://www.example.org/index.php? gefolgt von den gemerkten 6 Ziffern.
fred
Ah ok... Danke!
Die Erklärung hilft wirklich denke ich.
Vg kalle
Denke mal, dass da aber noch ein Fehler drin ist...
RewriteRule ^(\d{6})/$ http://www.example.org/index.php?$1 [R=301,L]Das passt aber auch nicht zu Deiner Frage
Du willst zu: von:
test_123456 also test_[6 Ziffern]
zu:
example.org/index.php?search=123456RewriteRule ^test_(\d{6})$ index.php?search=$1 [L]
wäre besser wobei ich aber glaube, Du willst eher:
RewriteRule ^test_(\d+)$ index.php?search=$1 [L]
(für alle Aufrufe einer Ressource einer Ressource test_(mindestens 1 Ziffer) tu mal so, als wäre index.php?search=(mindestens 1 Ziffer) aufgerufen worden.)
Was Du gemacht hast:
^ :: Beginnt die von Server angeforderte Resource mit
(\d{6}) :: genau 6 Ziffern, die zu merken sinddann schicke dem Browser die Mitteilung, dass die Ressource dauerhaft verzogen ist [R=301], dass keine weitere Regel beachtet werden soll [L] und schicke ihn zu http://www.example.org/index.php? gefolgt von den gemerkten 6 Ziffern.
fred
RewriteRule ^(\d{6})/$ http://www.example.org/index.php?$1 [R=301,L]
Das hier gegebene Muster entspricht Stringanfang gefolgt von exakt 6 Dezimalziffern gefolgt von einem Slash gefolgt vom Stringende
Passt also auf "123456/" oder "555555/" nicht aber auf "foo/bar/123456" oder "foo/bar/123456/"