我有一条规则可以正常运作:
<rule>
<from>^/(about|account|admin|cpanel)(\?.*)?$</from>
<to last="true">/faces/pages/$1/$1.xhtml$2</to>
</rule>
当我在之后添加以下规则时,我在加载与第一条规则匹配的页面时会收到javax.servlet.ServletException: PWC1232: Exceeded maximum depth for nested request dispatches: 20
异常。
<rule>
<from>^/([^\?]+?)/([^\?]+?)(\?.*)?$</from>
<to last="true">/faces/pages/$1/$2.xhtml$3</to>
</rule>
根据documentation,一旦第一条规则匹配,就不应再处理规则,因为我指定了last="true"
。知道我在这里可能缺少什么吗?
答案 0 :(得分:5)
在web.xml中,我更改了此内容(显示在UrlRewriteFilter文档中)
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
到这个
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
它开始表现得很好。这很奇怪,但它确实有效。
似乎没有重新发明轮子的价格花费了95%的开发时间来处理第三个错误。 (GlassFish是主要罪犯。)