我的项目(我们有Spring 3)需要重写表单
中的URLlocalhost:8888/testing/test.htm?param1=val1¶mN=valN
到
localhost:8888/nottestinganymore/test.htm?param1=val1¶mN=valN
我目前的规则如下:
<from>^/testing/(.*/)?([a-z0-9]*.htm.*)$</from>
<to type="passthrough">/nottestinganymore/$2</to>
但我的查询参数加倍,所以我得到param1 = val1,val1和paramN = valN,valN ...请帮忙!这个东西是一个巨大的痛苦。
要编辑/添加,我们在项目中使用了use-query-string = true,我怀疑我可以改变它。
答案 0 :(得分:0)
正则表达式需要一些调整。除非另有说明,否则Tuckey使用java正则表达式引擎。因此,处理此问题的最佳方法是编写一个小测试用例,以确认您的正则表达式是否正确。对于例如下面是一个带有测试用例的正则表达式的略微调整的示例。
@Test public void testRegularExpression()
{
String regexp = "/testing/(.*)([a-z0-9]*.htm.*)$";
String url = "localhost:8888/testing/test.htm?param1=val1¶mN=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。