gpt4 book ai didi

Java URLrewrite 过滤器找不到匹配项

转载 作者:行者123 更新时间:2023-11-30 11:49:38 26 4
gpt4 key购买 nike

我正在使用来自 tuckey (http://www.tuckey.org/urlrewrite/) 的 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&amp;action=show</to>
</rule>
<rule>
<from>^/group/([0-9]+)/(\\w*)$</from>
<to>/group?id=$1&amp;action=$2</to>
</rule>
<rule>
<from>^/group/([0-9]+)/(\\w*)\\?(.*)+$</from>
<to>/group?id=$1&amp;action=$2&amp;$3</to>
</rule>

再见

阿德里安

最佳答案

您应该使用单反斜杠 \ 而不是双反斜杠 \\

<rule>
<from>^/group/([0-9]+)/(\w*)$</from>
<to>/group?id=$1&amp;action=$2</to>
</rule>
<rule>
<from>^/group/([0-9]+)/(\w*)\?(.*)+$</from>
<to>/group?id=$1&amp;action=$2&amp;$3</to>
</rule>

在 Java 代码中,双反斜杠用于表示单个反斜杠。由于字符串是从外部文件中读取的,因此不需要对反斜杠进行转义。

关于Java URLrewrite 过滤器找不到匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8318130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com