【发布时间】:2020-09-30 22:03:20
【问题描述】:
我无法找到以下问题的答案: 如何将所有未处理(无控制器)的 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 将所有无法识别的路径重定向到根路径,但这很难看,我真的不想为了重定向而添加另一层。
谢谢:)
【问题讨论】:
-
如果你使用路由函数,所有的路由函数都会从上往下读取,这意味着它很像一个开关盒,你可以在底部放置一个“默认”盒,这将将客户端重定向到特定端点。因此“/”(斜杠)将返回您的索引,然后匹配“/**”的 get 函数将返回重定向到硬斜杠。
-
@ThomasAndolf 我会把它作为答案发布 - 我只是在输入类似的内容:-)
-
哈哈好吧@MichaelBerry
-
@ThomasAndolf 如果你把它们放在不同的类中会怎样:lankydan.dev/2018/03/21/… 你应该在 bean 中创建依赖关系吗?以确保它最后加载?
-
那是一种方式,你也可以使用
@Order注解我认为,有几种方式,但我不是真的舒尔!试试看! :)
标签: java spring-boot netty spring-webflux