Frage

Ich benutze den Urlrewrit -Filter von Tuckey ( http://www.tuckey.org/urlrewrite/ )

Jetzt habe ich einige Regeln erstellt, aber es gibt einen Fall, der mir Kopfschmerzen gibt. Die URL: /Gruppe/1/Update sollte umgeschrieben werden wie: /Gruppe? ID = 1 & action = Update

Ich habe ein Regexp -Muster für diesen Fall erstellt: ^/Group/([0-9]+)/( W*) $, aber der Filter kann ihn nicht umschreiben. Es gibt kein Match.

In meinem Testgezug habe ich diese URL durch alle meine Muster geleitet, um zu überprüfen. Und ich fand das Match wie erwartet.

assertFalse( "/group/1/update".matches("^/group/create$") );
assertFalse( "/group/1/update".matches("^/group/save$") );
assertFalse( "/group/1/update".matches("^/group/([0-9]+)/?$") );
assertTrue( "/group/1/update".matches("^/group/([0-9]+)/(\\w*)$") );
assertFalse( "/group/1/update".matches("^/group/([0-9]+)/(\\w*)\\?(.*)+$") );

Wie kommt es, dass der Filter keine Regel finden kann?

Nur um alles einzubeziehen, hier ist meine urlrewrite.xml oder ein Teil davon:

<rule>
    <from>^/group/create$</from>
    <to>/group?action=create</to>
</rule>
<rule>
    <from>^/group/save$</from>
    <to>/group?action=save</to>
</rule>
<rule>
    <from>^/group/([0-9]+)/?$</from>
    <to>/group?id=$1&amp;action=show</to>
</rule>
<rule>
    <from>^/group/([0-9]+)/(\\w*)$</from>
    <to>/group?id=$1&amp;action=$2</to>
</rule>
<rule>
   <from>^/group/([0-9]+)/(\\w*)\\?(.*)+$</from>
    <to>/group?id=$1&amp;action=$2&amp;$3</to>
</rule>

Wiedersehen

Adrian

War es hilfreich?

Lösung

Sie sollten einzelne Backslash verwenden \ anstelle von doppeltem Backslash \\.

<rule>
    <from>^/group/([0-9]+)/(\w*)$</from>
    <to>/group?id=$1&amp;action=$2</to>
</rule>
<rule>
    <from>^/group/([0-9]+)/(\w*)\?(.*)+$</from>
    <to>/group?id=$1&amp;action=$2&amp;$3</to>
</rule>

Im Java -Code wird der Doppel -Backalsh verwendet, um einen einzelnen Backslash darzustellen. Da die Zeichenfolge aus der externen Datei gelesen wird, ist die Flucht durch den Backslash nicht erforderlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top