UrlRewriteFilter正则规则不符合预期,求助解决
问题解决:UrlRewrite规则大小写匹配不符合预期
问题原因
你使用的Tuckey UrlRewriteFilter(Liferay 6.2内置版本)默认正则匹配不区分大小写,所以即使规则里写的是大写RDC,依然会匹配小写rdc的请求。
解决方案
方案1:单个规则强制区分大小写
修改RDC和IN的规则,在正则中加入(?-i)标记,强制该部分正则区分大小写,不受全局默认设置影响:
<rule> <from>^/documents/.*(?-i)RDC.*$</from> <to type="permanent-redirect">https://anvisalegis.datalegis.net/action/ActionDatalegis.php?acao=categorias&cod_modulo=310&menuOpen=true</to> </rule> <rule> <from>^/documents/.*(?-i)IN.*$</from> <to type="permanent-redirect">https://anvisalegis.datalegis.net/action/ActionDatalegis.php?acao=categorias&cod_modulo=310&menuOpen=true</to> </rule>
方案2:全局开启大小写敏感
在<urlrewrite>根标签添加case-sensitive="true"属性,让所有规则默认区分大小写。那些需要不区分大小写的规则(比如consulta、guia)里的(?i)局部标记依然会生效,不受全局设置影响:
<urlrewrite case-sensitive="true"> <!-- 原有所有规则内容 --> </urlrewrite>
额外注意
确保规则顺序正确:你配置中^/documents/.*$这个兜底规则已经放在所有更具体的/documents规则之后,这个顺序是正确的,能保证具体规则优先匹配。
内容的提问来源于stack exchange,提问作者jeanpdt
相关产品推荐
相关产品推荐

