tuckey ( http://www.tuckey.org/urlrewrite/ )の URLRewrite Filter を使用しています。
いくつかのルールを作成しましたが、頭痛の種が 1 つあります。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>
さよなら
エイドリアン