OCPSoft Rewrite规则问题:路径参数误包含查询参数如何修正?
问题原因与解决方法
问题所在
你的路由规则Join.path("/user/securities/{code}").to("/user/security.xhtml")中,{code}默认会贪婪匹配路径的剩余全部内容。当访问的URL带有?mode=CREATE这类查询参数时,?及后面的部分会被当成路径的一部分被{code}捕获,最终导致code的值变成BLA?mode=CREATE。
解决步骤
- 限制
{code}的匹配范围,让它只捕获路径段(不包含?和后续查询参数),可以通过正则约束实现:Join.path("/user/securities/{code:[^?]+}").to("/user/security.xhtml?code={code}") - 这里的
[^?]+正则表示匹配任意非?的字符,确保code只捕获到BLA。原始的查询参数mode=CREATE会被路由框架自动追加到目标URL中,最终生成你期望的/user/security.xhtml?code=BLA&mode=CREATE。
内容的提问来源于stack exchange,提问作者grigouille
相关产品推荐
相关产品推荐

