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 重定向到硬斜杠 /.