Я использую URLRewrite Filter от Tuckey (http://www.tuckey.org/urlrewrite/)
Теперь я создал несколько правил, но есть один случай, который вызывает у меня головную боль.
URL: / group / 1 / update должен быть переписан как: / group? Id = 1 & action = update
Я создал шаблон регулярного выражения для этого случая: ^ / group / ([0-9] +) / (\ w *) $ , но Фильтр не может переписать его. Нет совпадений.
Внутри моего TestCase я проверил этот URL через все мои шаблоны, просто чтобы проверить. И я нашел совпадение, как и ожидал.
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*)\\?(.*)+$") );
Так почему же Фильтру не удается найти правило?
Чтобы включить все, вот мой urlrewrite.xml или его часть:
<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&action=show</to>
</rule>
<rule>
<from>^/group/([0-9]+)/(\\w*)$</from>
<to>/group?id=$1&action=$2</to>
</rule>
<rule>
<from>^/group/([0-9]+)/(\\w*)\\?(.*)+$</from>
<to>/group?id=$1&action=$2&$3</to>
</rule>
Bye
Адриан