qwertz1
Goto Top

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?

Content-Key: 347849

Url: https://administrator.de/contentid/347849

Printed on: April 24, 2024 at 21:04 o'clock

Mitglied: 133883
Solution 133883 Aug 31, 2017 updated at 20:15:10 (UTC)
Goto Top
Das Verhalten ist korrekt da ein
mehr=1&id=2 ein Match darstellt wenn der Querystring so lautet
mehr=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ß
Member: qwertz1
qwertz1 Sep 01, 2017 at 09:49:23 (UTC)
Goto Top
Danke. Habe das $ am Ende von RewriteCon gesetzt. Damit funktioniert ist!!