Domanda

Sto usando il filtro URLRewrite da Tuckey ( http://www.tuckey.org/urlrewrite/)

Ora ho creato alcune regole, ma c'è un caso che mi dà il mal di testa. L'URL: / group / 1 / update deve essere riscritto come: / gruppo id = 1 & action = update

?

Ho creato un modello di espressione regolare per questo caso: ^ / gruppo / ([0-9] +) / (\ w *) $ , ma il filtro è in grado di riscriverlo. Non v'è alcuna corrispondenza.

Dentro il mio TestCase Ho eseguito questo URL attraverso tutti i miei modelli, solo per controllare. E ho trovato la partita come mi aspettavo.

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*)\\?(.*)+$") );

Allora come mai il filtro è in grado di trovare una regola?

Proprio per includere tutto ciò, ecco la mia urlrewrite.xml, o parte di esso:

<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>

Ciao

Adrian

È stato utile?

Soluzione

Si dovrebbe usare solo \ backslash invece di doppia \\ 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>

Nel codice Java, il doppio backalsh viene utilizzato per rappresentare una singola barra rovesciata. Dal momento che la stringa viene letta dal file esterno, non v'è alcuna necessità la fuga la barra inversa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top