【问题标题】:urlrewriting tuckey using Tuckey使用 Tuckey 重写 tuckey
【发布时间】:2014-02-05 23:17:44
【问题描述】:

我的项目(我们有 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,我怀疑我可以更改它。

【问题讨论】:

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


    【解决方案1】:

    正则表达式需要一些调整。除非另有说明,否则 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&paramN=valN

    您现在可以修改表达式以查看要从 URL 中提取的“组”,然后形成目标 URL。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      • 2013-01-30
      • 2012-12-07
      相关资源
      最近更新 更多