2017-06-22 77 views
1

我想配置我的Spring Boot应用程序以将任何404找不到请求重定向到我的单页应用程序。将弹簧引导配置为将404重定向到单页应用程序

例如,如果我打电话localhost:8080/asdasd/asdasdasd/asdasd这是不存在的,它应该重定向到localhost:8080/notFound

问题是我有一个单独的页面反应应用程序,它运行在根路径localhost:8080/。所以春天应该重定向到localhost:8080/notFound然后转发到/(保持路由)。

+0

是您的服务,说明资源春季启动应用程序;如果是这样,你是否在Boot中做了一些特别的配置,或者你是否依靠默认设置? 难道你不觉得这种行为会不正确吗?即使资源显然不存在,也会用HTTP 200 OK和索引页回复所有*请求? –

+0

我想你应该考虑使用React重定向到未知页面,详情请参阅[这个问题](https://stackoverflow.com/q/32128978/1126831) – ledniov

回答

7

这应该做的伎俩:添加一个错误页面,404路线/notFound,并转发给您的SPA(假设该条目上/index.html):

@Configuration 
public class WebApplicationConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
     registry.addViewController("/notFound").setViewName("forward:/index.html"); 
    } 


    @Bean 
    public EmbeddedServletContainerCustomizer containerCustomizer() { 
     return container -> { 
      container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, 
        "/notFound")); 
     }; 
    } 

} 
+0

在Spring Boot V2中(目前正在开发中,2.0.0。 M7),'EmbeddedServletContainerCustomizer'已经更改为'WebServerFactoryCustomizer'。 bean'containerCustomizer'的签名将是'WebServerFactoryCustomizer '' – n002213f

相关问题