Spring Webflux 将所有 404 页面重定向到 index.html
Spring Webflux redirect all 404 pages to index.html
我找不到以下问题的答案:
如何将所有未处理的(无控制器)url 重定向到 index.html?
我找到了以下指南
webflux redirect root path to index
但这无助于重定向其他未映射的 url,例如:http://localhost:8080/blabla,这将导致 404 页面
如果我添加以下 bean,它将覆盖所有现有控制器并且 api 将无法访问
@Bean
public RouterFunction<ServerResponse> indexRouter(@Value("classpath:/public/index.html") final Resource indexHtml) {
return route(GET("/**"), request -> ok().contentType(MediaType.TEXT_HTML).bodyValue(indexHtml));
}
这个问题有已知的解决方案吗?
我可以使用 nginx 将所有无法识别的路径重定向到根路径,但这很难看,我真的不想添加另一个层来重定向。
谢谢:)
如果您使用的是RouterFunctions
,所有路由器功能将从上到下读取,这意味着它非常像一个开关盒。
这意味着您可以在底部放置一个 "default" 案例,这会将客户端重定向到特定端点。
因此在您的示例中 /
(斜杠)将 return 您的 index.html
,然后匹配 /**
的 GET
函数将 return 重定向到硬斜杠 /
.
我找不到以下问题的答案: 如何将所有未处理的(无控制器)url 重定向到 index.html? 我找到了以下指南 webflux redirect root path to index
但这无助于重定向其他未映射的 url,例如:http://localhost:8080/blabla,这将导致 404 页面
如果我添加以下 bean,它将覆盖所有现有控制器并且 api 将无法访问
@Bean
public RouterFunction<ServerResponse> indexRouter(@Value("classpath:/public/index.html") final Resource indexHtml) {
return route(GET("/**"), request -> ok().contentType(MediaType.TEXT_HTML).bodyValue(indexHtml));
}
这个问题有已知的解决方案吗? 我可以使用 nginx 将所有无法识别的路径重定向到根路径,但这很难看,我真的不想添加另一个层来重定向。
谢谢:)
如果您使用的是RouterFunctions
,所有路由器功能将从上到下读取,这意味着它非常像一个开关盒。
这意味着您可以在底部放置一个 "default" 案例,这会将客户端重定向到特定端点。
因此在您的示例中 /
(斜杠)将 return 您的 index.html
,然后匹配 /**
的 GET
函数将 return 重定向到硬斜杠 /
.