JSF UrlRewriteFilter 包罗万象/404 替换

2024-01-18

我正在使用 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 to [^\s]+即使有一个物理文件匹配search.jsf.

其他所有规则都有last="true"因为它们都不应该重叠(显然,除了这个包罗万象的东西)。

我读了UrlRewriteFilter 手册 http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/4.0/index.html#condition除此之外似乎找不到任何东西last="true"从理论上讲,如果已经找到一个匹配项,这应该会阻止该过程检查其他匹配项。

非常感谢!

EDIT:由于缺乏答案并且我无法解决这个问题,我检查了另一种方法。参考这个问题在这里。 https://stackoverflow.com/questions/18258085/custom-jsf-404-get-requested-url?lq=1


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

1创建一个搜索规则,就像重写一个 url 一样/search?q=foo to /search.jspf?q=foo

我猜是这样的:

<rule>
  <name>Search</name>
  <from>^/search\?(.*)$</from>
  <to type="forward" last="true">/search.jsf?\1</to>
</rule>

然后只需更改您的默认规则即可使用/search而不是实际的文件/search.jspf:

<rule>
  <name>Default + 404</name>
  <from>^/[^\s]+$</from>
  <to type="forward">^/search?q=$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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSF UrlRewriteFilter 包罗万象/404 替换 的相关文章

  • jsf中的会话注销问题

    我正在开发一个 Web 应用程序 并使用框架 jsf hibernate 和 spring 应用程序中有不同类型的用户 根据此处登录的用户类型 我为不同的用户类型启用菜单中的链接 用户登录后 会向用户提供菜单栏中的注销链接 我已经编写了 l
  • 禁用特定 java 包的所有 checkstyle 检查

    我有两个包 即 com mydomain abc delegate xyz jaxws 托管 and com mydomain abc xyz jaxws managed 我要求仅对第二个包禁用 checkstyle 因为它们包含自动生成的
  • 如何使用正则表达式获取两个特定字符“:”和“@”之间的字符串部分?

    如何获取 SIP URI 的一部分 例如我有 URIsip email protected cdn cgi l email protection 我需要得到只是username我用 sip 表达式 但出现的结果是username 我如何从匹
  • Spring Boot 应用程序的 .jar 无法正常工作(tomcat-embed-jasper 问题)

    我对 Spring boot 和 Maven 相当陌生 我在尝试运行可执行文件 jar 时遇到问题 我的最终目标是创建 jar 的 docker 映像 以便我可以部署我的应用程序 当我执行 mvn clean install 时 我得到了应
  • 如何从 Python 列表中删除日期

    我有一个标记化文本列表 list of words 看起来像这样 list of words 08 20 2014 10 04 27 pm complet vendor per mfg recommend 08 20 2014 10 04
  • 正则表达式 - 检查输入是否仍有机会匹配

    我们有这样的正则表达式 var regexp one two three 所以只有像这样的字符串 one two three or one two three four or one twotwo three 等会匹配它 但是 如果我们有类
  • 在 Apache Tomcat 上运行 JSF 项目

    如何在Tomcat上午餐JSP项目 我复制WebContent文件夹到webappApache 的文件夹 但它找不到我的 jsp 页面 但如果我将 jsp 更改为 jsf index jsf 就可以正常工作 我怎么解决这个问题 web xm
  • UcanaccessSQLException:UCAExc:::3.0.1 表达式的数据类型不是布尔值

    我有一张如下图所示的表格 我需要获取其库尔德语单词包含的所有英语单词 r 所以我不能使用 select English from Table1 where Kurdish like 因为它还接受另一个单词中的子字符串 例如 当我尝试在查询中
  • 使用解析将 ** 运算符更改为幂函数?

    我的要求是将 运算符更改为幂函数 例如 1 Input B 2 Output power B 2 2 B 2 T 2 X Output power B 2 我写了下面的正则表达式来解决这个问题 rx r a zA Z0 9 a zA Z0
  • 正则表达式接受 4 条规则中的 3 条

    我似乎无法让正则表达式正确满足以下要求 长度在 8 到 20 之间的字符串 必须包含至少 1 个大写字母字符 至少 1 个小写字母字符 以及至少 1 个数字或至少 1 个特殊字符字符 或两者 假设特殊字符仅限于包括 我最初是这样写的 A Z
  • 将上部字符转换为下部字符,将下部字符转换为上部字符(反之亦然)[重复]

    这个问题在这里已经有答案了 我需要将某些字符串中的所有较低字符转换为较高字符 并将所有较高字符转换为较低字符 例如 var testString heLLoWorld 应该 HEllOwORLD 转换后 在不保存临时字符串的情况下实现此目的
  • 删除特定数据表上的所有边框

    我需要使用 PrimeFaces 隐藏一个数据表的所有边框 而不是全部 我尝试了很多事情 但没有人奏效 有谁知道该怎么做 我已将以下样式 单独 应用于ui datatable class border hidden important bo
  • Tomcat Intellij Idea:远程部署

    RackSpace 云服务器 Ubuntu 12 04 Intellij Idea 11 1 2 Windows 8 Tomcat 7 0 26 JDK 6 在 Intellij Idea 上 当我尝试在远程 Tomcat 7 服务器上运行
  • 从支持 bean 更新 PrimeFaces 数据表

    我在 bean 中使用 Schedule Timer 当员工注册从指纹设备获取数据时 它会更新变量 当 bean 中的变量更新时 我需要从支持 bean 更新 jsf 中的组件 我尝试使用 primefaces poll 组件 但它每次都会
  • 使用 sed 删除大括号对之间的所有内容

    我有一个看起来像这样的字符串 B F blue master F red f k b f k b K black B F green 我想删除匹配的子字符串 它可能包含也可能不包含相同顺序的其他子字符串 我应该得到 master 作为最终输
  • 检查条件并通过 Zend 中的 Regex 识别 url 中的模式

    我正在实现 Zend Regex 路由 并且必须对 url 执行多次检查 例如 如果这是我的网址 http localhost application public index php module controller action 这是
  • shell中如何分割字符串

    我有一个变量作为 string ABC400p2q4 我怎样才能分开ABC400 and p2q4 我需要将它分成两个变量 结果我得到 echo var1 ABC400 echo var2 p2q4 可以用任何字母字符代替 ABC 可以用任
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • 加密 JBoss 配置中的敏感信息

    JBoss 中的标准数据源配置要求数据库用户的用户名和密码位于 xxx ds xml 文件中 如果我将数据源定义为 c3p0 mbean 我会遇到同样的问题 是否有标准方法来加密用户和密码 保存密钥的好地方是什么 这当然也与 tomcat
  • 使用 php/regex 验证美国电话号码

    EDIT 我混合并修改了下面给出的两个答案 以形成完整的功能 现在它可以完成我想要的功能 然后是一些 所以我想我会将其发布在这里 以防其他人来寻找同样的东西 Function to analyze string against many p

随机推荐

  • 按每行中 NA 的数量对数据进行排序

    我想对有一些缺失值的数据框进行排序 name dist1 dist2 dist3 prop1 prop2 prop3 month2 month5 month10 month25 month50 issue 1 A1 232 0 1462 9
  • 如何在边框一侧创建带有链接的圆圈

    我想画一个像这样的圆圈this http jsfiddle net 4ns3bc9h 1 我能够在小提琴中做到这一点 但问题是我需要每个橙色边都是一个链接 而我不能用边框来做到这一点 如果有人能帮助我 我将非常感激 circle width
  • 如何在 ERB 中转义 ERB 标签

    我有一个简单的fixture yml file label body 问题是 ERB 代码被解析为加载夹具的一部分 而我实际上希望主体字面意思是 未插值 如何逃脱 ERB 标签 添加第二个 到开始标签 label body The
  • 唯一的短信发送者 ID?

    我想构建一个向人们发送短信的应用程序 但是 我希望我的用户知道短信来自应用程序而不是其他任何内容 因此他们无法伪造它 有没有办法保证发件人 ID 对于我的应用程序是唯一的 似乎通过电话发送 SMS 时每个电话号码都有一个唯一的 SENDER
  • Angular 与微数据

    Microdata 是否可以与动态 Angular 一起使用ng repeat items 我可以将它用作 div div 我已经发现模式验证器 https search google com structured data testing
  • 如何将滚动视图布局分成两半以显示父背景颜色和两个窗格?

    我有一个带有白色背景的简单 UI 屏幕 然后我有 Scrollview 四周边距为 10 dp 背景为黑色 所以基本上是一个矩形中的一个矩形 如何将滚动视图分成两半 以便可以在内部黑色矩形的中间显示一条白色水平线 从而创建两个黑色窗格 下面
  • createBottomTabNavigator 具有针对不同选项卡的动态 tabStyle

    根据Document https reactnavigation org docs en bottom tab navigator html bottomtabnavigatorconfig 我可以改变activeTintColor and
  • 使用ansible从配置文件中删除文本块

    我正在尝试从 samba 配置文件 smb conf 中删除以下部分 public path opt samba public guest ok yes browsable yes writable yes read only no Blo
  • 来自 Jenkins 的 Web 服务调用

    我需要编写一个 Web 服务客户端并从 Jenkins 调用它 以下是我的问题 从 Jenkins 调用 Web 服务的最佳方式是什么 有可用的默认插件吗 我需要将 XML 数据作为输入传递给 Web 服务 如果插件不是选项 您能否让我知道
  • 带有 CUDA 的 Lambda 表达式

    如果我使用thrust transform on thrust host lambda 用法没问题 thrust transform thrust host a a arraySize b d int a int b gt int retu
  • 子虚拟目录中的 IIS URL 重写不重定向

    我在 默认网站 果园 上安装了 Asp NET 应用程序 可访问http localhost 果园 http localhost orchard 并且我想使用 URL 重写 我添加了规则
  • 如何删除当前目录中与给定模式不匹配的某些文件?

    using rm sh删除以 sh 结尾的文件很容易且易于理解 但是如何删除当前目录中所有不以以下结尾的文件 jar就像是rm except jar 尝试这个 find mindepth 1 maxdepth 1 name jar sort
  • 如何正确使用 ref 与 React 类组件和样式组件?

    我正在尝试构建一个下拉菜单 基础结构Test是我需要使用 React 检测内容区域之外的点击的地方ref and styled components 我已经检查了 SO 中的相关文章 但它们使用了我的类组件不支持的钩子 这是代码 impor
  • Javascript文件写入覆盖页面?

    我对 javascript 很陌生 我正在尝试使用 document write 使用 Wordpress 创建一个标签 以添加在预加载之前隐藏图像的样式 在通过 CSS 加载图像之前 我不得不编写 Javascript 样式来隐藏图像 我
  • CUDA 纹理内存中支持双精度类型

    计算能力1 3的GTX 280中可以为双精度型变量声明2D纹理吗 该声明仅针对 float 给出 据我所知 你不能 但是 您可以使用 int2 类型 如第 23 点所示 http forums nvidia com index php sh
  • C++ Singleton 未定义的引用

    我是 C 新手 并试图理解 C 中的单例模式 myclass h ifndef MYCLASS H define MYCLASS H class Myclass public static Myclass getInstance priva
  • 使用常量字符串列表中的 INNER JOIN 进行 SQL INSERT

    我想创建一个 SQL Server 2012 查询 它插入一个常量的权限名称列表 例如将 ViewUsersPermission ModifyUsersPermission 添加到表 RolePermissions 中 该表有两列 Role
  • 如何消除日期抖动中的时间

    我想从这个日期中删除时间格式 我想显示这样的日期22 10 2019 or 2019 10 22 2019 10 22 00 00 00 000 现在有一个DateUtils https api flutter dev flutter ma
  • 将 NSTimer 设置为将来触发一次

    如何设置 NSTimer 在将来触发一次 例如 30 秒 到目前为止 我只能将其设置为立即触发 然后每隔一段时间触发 您要使用的方法是 NSTimer scheduledTimerWithTimeInterval NSTimeInterva
  • JSF UrlRewriteFilter 包罗万象/404 替换

    我正在使用 Tuckey UrlRewrite 设置 URL 规则 到目前为止一切正常 但是我正在努力处理我的默认页面 客观的 任何与现有文件不匹配的请求 或者 任何不符合先前规则的请求 应该启动搜索search jsf q 它的目的是处理