使用Tuckey urlrewriting tuckey

时间:2014-02-05 23:17:45

标签: spring url-rewriting tuckey-urlrewrite-filter

我的项目(我们有Spring 3)需要重写表单

中的URL
localhost:8888/testing/test.htm?param1=val1&paramN=valN 

localhost:8888/nottestinganymore/test.htm?param1=val1&paramN=valN

我目前的规则如下:

<from>^/testing/(.*/)?([a-z0-9]*.htm.*)$</from>
<to type="passthrough">/nottestinganymore/$2</to>

但我的查询参数加倍,所以我得到param1 = val1,val1和paramN = valN,valN ...请帮忙!这个东西是一个巨大的痛苦。

要编辑/添加,我们在项目中使用了use-query-string = true,我怀疑我可以改变它。

1 个答案:

答案 0 :(得分:0)

正则表达式需要一些调整。除非另有说明,否则Tuckey使用java正则表达式引擎。因此,处理此问题的最佳方法是编写一个小测试用例,以确认您的正则表达式是否正确。对于例如下面是一个带有测试用例的正则表达式的略微调整的示例。

@Test public void testRegularExpression()
{
    String regexp = "/testing/(.*)([a-z0-9]*.htm.*)$";
    String url = "localhost:8888/testing/test.htm?param1=val1&paramN=valN";

    Pattern pattern = Pattern.compile(regexp);

    Matcher matcher = pattern.matcher(url);

    if (matcher.find())
    {
        System.out.println("$1 : " + matcher.group(1) );
        System.out.println("$2 : " + matcher.group(2) );
    }
}

以上将打印输出如下:

$ 1:测试

$ 2:.htm?param1 = val1&amp; paramN = valN

您现在可以修改表达式以查看&#34;群组&#34;您想从URL中提取,然后形成目标URL。