我正在使用 Tuckey UrlRewrite 设置 URL 规则。到目前为止一切正常,但是我在默认页面上苦苦挣扎。
目标: - 任何与现有文件不匹配的请求;或 - 任何与先前规则不匹配的请求......都应该通过搜索启动search.jsf?q=
。它旨在处理来自旧网站的任何可能的死链接,并将 404 页面替换为更实用的内容(以帮助用户找到他真正想要的内容)。
部分代码(其他规则与第二条类似,只有“默认”规则使其崩溃):
<rule>
<name>Home</name>
<from>^/$</from>
<to type="forward" last="true">/home.jsf</to>
</rule>
<rule>
<name>Contact Us</name>
<from>^/contact_us/?$</from>
<to type="forward" last="true">/contactUs.jsf</to>
</rule>
<rule>
<name>Default + 404</name>
<from>^/[^\s]+$</from>
<to type="forward">^/search.jsf?q=$1</to>
</rule>
即使有物理文件匹配search.jsf
,它也会导致堆栈溢出。[^\s]+
search.jsf
每个其他规则都有last="true"
,因为它们都不应该重叠(显然除了这个包罗万象)。
我阅读了UrlRewriteFilter 手册,似乎找不到任何东西last="true"
,理论上,如果它已经找到了其他匹配项,则应该停止该过程检查其他匹配项。
非常感谢!
编辑:由于缺乏答案并且我无法解决这个问题,我检查了另一种方法。请在此处参考此问题。