Url rewriting 过滤装置;违反规则

Url rewriting 过滤装置;违反规则,url-rewriting,Url Rewriting,大家好 我有一些非常相似的规则 <rule> <from>/a/**/b/**/c/**/d</from> <to>/somePlace</to> </rule> <rule> <from>/a/**/b/**/c</from> <to>/anotherPlace1</to> </rule> &

大家好 我有一些非常相似的规则

    <rule>
    <from>/a/**/b/**/c/**/d</from>
    <to>/somePlace</to>
</rule>

    <rule>
    <from>/a/**/b/**/c</from>
    <to>/anotherPlace1</to>
</rule>

    <rule>
    <from>/a/**/b</from>
    <to>/anotherPlace2</to>
</rule>

/a/**/b/**/c/**/d
/某处
/a/**/b/**/c
/另一个地方1
/a/**/b
/另一个地方2

我想当第一条规则完全匹配时,它只会被执行,而其他规则则不会,比如中断编程,知道如何执行吗?

规则是按顺序执行的-如果它匹配第一条规则,它将执行它,如果它不匹配,它将转到下一条规则,依此类推

因此,您需要按优先级排列规则,这应该会有所帮助


paul

规则按顺序执行-如果它与第一条规则匹配,它将执行它,如果它不匹配,它将转到下一条规则,依此类推

因此,您需要按优先级排列规则,这应该会有所帮助


paul

您是否尝试过将第一条规则更改为指令:

<to last="true">/somePlace</to>
/somePlace

您是否尝试将第一条规则更改为指令:

<to last="true">/somePlace</to>
/somePlace
如果您正在使用,您可以使用生命周期控制实现同样的目标:

.defineRule()
     .when(Direction.isInbound().and(Path.matches("/some/{page}/")))
     .perform(Forward.to("/new-{page}/"));
如果我们想停止处理规则,我们可以将生命周期标记为“已处理”,并且不再处理其他规则

.defineRule()
     .when(Direction.isInbound().and(Path.matches("/other/{page}/")))
     .perform(Lifecycle.handled());
随后,我们还可以使用
生命周期。继续()
生命周期。中止()
控件继续处理,即使之前标记为已处理(在同一规则中)或完全终止请求(中止整个HttpServletRequest),您可以使用生命周期控制实现同样的目标:

.defineRule()
     .when(Direction.isInbound().and(Path.matches("/some/{page}/")))
     .perform(Forward.to("/new-{page}/"));
如果我们想停止处理规则,我们可以将生命周期标记为“已处理”,并且不再处理其他规则

.defineRule()
     .when(Direction.isInbound().and(Path.matches("/other/{page}/")))
     .perform(Lifecycle.handled());

随后,我们还可以使用
Lifecycle.procedue()
Lifecycle.abort()
控件继续处理,即使之前标记为已处理(在同一规则中)或完全终止请求(中止整个HttpServletRequest),如果我写的东西与第一条规则相匹配,那么只会执行第一条规则?我不确定你是在使用IIS重写、mod_rewrite for php、.htaccess文件还是第三部分,但当一条规则向下运行时被发现,然后列出,它就会被执行,有一种方法可以阻止某些引擎执行其他规则,但我不确定您是否打开了此规则。如果您熟悉此规则,我正在使用tuckey。我恐怕不熟悉此引擎,但我在其上找到了此信息表。中有一些关于如果未指定,将如何依次触发每条规则的内容为了尝试找到一个最佳匹配的场景-因此这里有一些有用的信息可供使用-我希望它有一些用处:(所以你是说在当前的顺序中,如果我写的东西与第一条规则相匹配,那么只有第一条规则会被执行?我不确定你是在使用IIS重写、php的mod_rewrite、.htaccess文件还是第三部分,但是当一条规则在向下运行时被发现,然后列表会被执行,有一种方法可以阻止其他规则被执行。)使用某些引擎执行,但我不确定您是否打开了此规则我正在使用tuckey如果您熟悉它我恐怕不熟悉该引擎-但我在上面找到了此信息表-中有一些关于如何在未指定的情况下依次触发每个规则以尝试找到最佳匹配场景的内容-因此,这里有一些有用的信息可供使用-我希望它有一定的用处:(这应该是公认的答案!上面的答案不能解决问题,因为UrlRewriteFilter默认处理所有规则。这应该是公认的答案!上面的答案不能解决问题,因为UrlRewriteFilter默认处理所有规则。