urlrewrite 匹配规则之优先选择

urlrewrite rule可以使用java的正则表达式匹配规则,但是这里存在一个问题点,假如有一个通配的规则和一个精确匹配的规则,urlrewrite 会选择那个去匹配呢?


如下两种规则:

<from>^/ajax/(w+)(.html)$</from>
			<to type="forward">/ajax/$1.action</to>

			<from>^/(w+)/(w+)(.html)$</from>
			<to type="forward">/$1-$2.action</to>


urlrewrite.xml文件

	<!--Warning 警告:在urlrewrite尽量少的使用通配的规则;
		由于它匹配到一个就不再匹配第二个了,所以即便是有更加精确的匹配,
		如果写在通用的匹配规则之后,还是无法匹配的,这是个问题点。望君注意!
		eg: <from>^/ajax/(w+)(.html)$</from>
			<to type="forward">/ajax/$1.action</to>

			<from>^/(w+)/(w+)(.html)$</from>
			<to type="forward">/$1-$2.action</to>
			
			如上两种规则:如果请求路径是http://localhost:8080/IcMarket/ajax/login.html
			显然这两种规则都能匹配:出现的情况就是,这两种规则谁在上面,就现匹配谁的规则;urlrewrite这东西不会像
			struts2 一样精确的找到最佳匹配的规则,它只要找到一个能够匹配的就不再往下寻找;为了防止你的规则被杂乱无章的匹配,
			尽量控制好自己想要匹配的原则。
	-->
	
	
原文地址:https://www.cnblogs.com/dyllove98/p/3201094.html