Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex JSF URLEwriteFilter catchall/404替换_Regex_Jsf_Tomcat_Http Status Code 404_Tuckey Urlrewrite Filter - Fatal编程技术网

Regex JSF URLEwriteFilter catchall/404替换

Regex JSF URLEwriteFilter catchall/404替换,regex,jsf,tomcat,http-status-code-404,tuckey-urlrewrite-filter,Regex,Jsf,Tomcat,Http Status Code 404,Tuckey Urlrewrite Filter,我正在使用Tuckey UrlRewrite设置URL规则。到目前为止,一切都正常,但我正在努力使用我的默认页面 目标: -与现有文件不匹配的任何请求;或 -任何与以前的规则不匹配的请求 …应该通过search.jsf?q=启动搜索。它的目的是处理遗留网站上任何可能的死链接,并用功能更强大的页面替换404页面(帮助用户找到他真正想要的内容) 部分代码(其他规则与第二个类似,只有“默认”规则使其崩溃): 家 ^/$ /home.jsf 联系我们 ^/联系我们/$ /contactUs.jsf 默

我正在使用Tuckey UrlRewrite设置URL规则。到目前为止,一切都正常,但我正在努力使用我的默认页面

目标: -与现有文件不匹配的任何请求;或 -任何与以前的规则不匹配的请求 …应该通过
search.jsf?q=
启动搜索。它的目的是处理遗留网站上任何可能的死链接,并用功能更强大的页面替换404页面(帮助用户找到他真正想要的内容)

部分代码(其他规则与第二个类似,只有“默认”规则使其崩溃):


家
^/$
/home.jsf
联系我们
^/联系我们/$
/contactUs.jsf
默认值+404
^/[^\s]+$
^/search.jsf?q=$1
当它将
search.jsf
匹配到
[^\s]+
时,它会导致堆栈溢出,即使存在与
search.jsf
匹配的物理文件

每个其他规则都有
last=“true”
,因为它们都不应该重叠(显然,除了这个catchall)

我阅读了,除了
last=“true”
之外,似乎找不到任何东西,从理论上讲,这应该可以阻止进程检查其他匹配项(如果已经找到)

多谢各位


编辑:由于没有答案,而且我无法解决这个问题,我选择了另一种方法。参考

我对塔奇一无所知,但我能想到两个简单的解决方案:

1为类似的搜索创建一个规则,将类似
/search?q=foo
的url重写为
/search.jspf?q=foo

我猜是这样的:

<rule>
  <name>Search</name>
  <from>^/search\?(.*)$</from>
  <to type="forward" last="true">/search.jsf?\1</to>
</rule>
2重写默认规则的匹配正则表达式,以使用负前瞻性明确排除
search.jspf

<rule>
  <name>Default + 404</name>
  <from>^/(?!search.jspf)[^\s]+$</from>
  <to type="forward">^/search.jspf?q=$1</to>
</rule>

默认值+404
^/(?!search.jspf)[^\s]+$
^/search.jspf?q=$1
<rule>
  <name>Default + 404</name>
  <from>^/[^\s]+$</from>
  <to type="forward">^/search?q=$1</to>
</rule>
<rule>
  <name>Default + 404</name>
  <from>^/(?!search.jspf)[^\s]+$</from>
  <to type="forward">^/search.jspf?q=$1</to>
</rule>