2017-06-22 76 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

相關問題