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-ID: 347849

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

Ausgedruckt am: 26.11.2024 um 01:11 Uhr

133883
Lösung 133883 31.08.2017 aktualisiert um 22:15:10 Uhr
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ß
qwertz1
qwertz1 01.09.2017 um 11:49:23 Uhr
Goto Top
Danke. Habe das $ am Ende von RewriteCon gesetzt. Damit funktioniert ist!!