Exaktes Matching bei RewriteCond
Hallo,
ich habe eine Problem mit RewriteCond und RewriteRul. Ich habe eine Menge solcher Regeln. Die sehen grob so aus:
RewriteCond %{QUERY_STRING} ^(mehr=1)&(id=2)
RewriteRule ^/de/home/user/irgendwas/?$ http://www.bbb.de/home/h/mitarbeiterinnen-a-z/profil/detail-mitarbeiter ..? [L,R=301]
RewriteCond %{QUERY_STRING} ^(mehr=1)&(id=24)
RewriteRule ^/de/home/user/irgendwas/?$ http://www.bbb.de/home/h/mitarbeiterinnen-a-z/profil/detail-mitarbeiter ..? [L,R=301]
Mein Problem: www./de/home/user/irgendwas/?mehr=1&id=2 funktioniert geht auf die Seite von Hans Meier, www./de/home/user/irgendwas/?mehr=1&id=24 geht auf die Seite von Hans Meier. Anscheinend bricht er bei der 2 in der id ab und sagt, dass das eine Matching ist und geht wieder auf die Seite von Hans Meier und nicht auf die Seite von Anne Tesla. Kann mir jemand einen Tip geben, wie ein exaktes Matching in dem Fall geht?
ich habe eine Problem mit RewriteCond und RewriteRul. Ich habe eine Menge solcher Regeln. Die sehen grob so aus:
RewriteCond %{QUERY_STRING} ^(mehr=1)&(id=2)
RewriteRule ^/de/home/user/irgendwas/?$ http://www.bbb.de/home/h/mitarbeiterinnen-a-z/profil/detail-mitarbeiter ..? [L,R=301]
RewriteCond %{QUERY_STRING} ^(mehr=1)&(id=24)
RewriteRule ^/de/home/user/irgendwas/?$ http://www.bbb.de/home/h/mitarbeiterinnen-a-z/profil/detail-mitarbeiter ..? [L,R=301]
Mein Problem: www./de/home/user/irgendwas/?mehr=1&id=2 funktioniert geht auf die Seite von Hans Meier, www./de/home/user/irgendwas/?mehr=1&id=24 geht auf die Seite von Hans Meier. Anscheinend bricht er bei der 2 in der id ab und sagt, dass das eine Matching ist und geht wieder auf die Seite von Hans Meier und nicht auf die Seite von Anne Tesla. Kann mir jemand einen Tip geben, wie ein exaktes Matching in dem Fall geht?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 347849
Url: https://administrator.de/contentid/347849
Ausgedruckt am: 26.11.2024 um 01:11 Uhr
2 Kommentare
Neuester Kommentar
Das Verhalten ist korrekt da ein
die 4 interessiert die Regex Engine nicht mehr da alles vorhergehende zutrifft und da die Regel vor der längeren Regel mit der 24 steht kommt auch nur sie zur Anwendung (L)!
Das kannst du bspw. so ändern indem du der Regex Engine sagst wo sie das Ende des Patterns suchen soll. Also indem du ein Dollarzeichen anhängst welches das Ende eines Strings matcht
Gruß
mehr=1&id=2
ein Match darstellt wenn der Querystring so lautetmehr=1&id=24
die 4 interessiert die Regex Engine nicht mehr da alles vorhergehende zutrifft und da die Regel vor der längeren Regel mit der 24 steht kommt auch nur sie zur Anwendung (L)!
Das kannst du bspw. so ändern indem du der Regex Engine sagst wo sie das Ende des Patterns suchen soll. Also indem du ein Dollarzeichen anhängst welches das Ende eines Strings matcht
^mehr=1&id=2$
Gruß