我有一个使用 Angular 制作的简单前端应用程序。所有路由均由 Angular 处理,因此我希望 Spring boot 将所有页面流量转发到,"/"
以便 Angular 路由可以处理它们。
stackoverflow 中已经有一些已知的答案。他们是:
但它们都不再工作了,因为从Spring Framework 5.3 及更高版本开始,它们 AntPathMatcher
已被PathPattern
. PathPattern
与语法兼容,AntPathMatcher
但以下内容除外:
仅允许在模式末尾支持多段匹配的“**”。在为给定请求选择最接近的匹配时,这有助于消除大多数歧义原因。
所以这不再起作用:
// Match everything without a suffix (so not a static resource)
@RequestMapping(value = "/**/{path:[^.]*}")
public String redirectAngularRoutes() {
return "forward:/";
}
Run Code Online (Sandbox Code Playgroud)
那么从 Spring Framework 5.3 开始,最好的方法是什么?
我们是否指定每个角度路由及其forward
如下所示"/"
,或者还有其他替代方案?
@RequestMapping({ "/help/**","/view/**","/admin/**" })
public String redirectAngularRoutes() {
return "forward:/";
}
Run Code Online (Sandbox Code Playgroud)