2017-06-22 12 views
1

404ページのリクエストが1ページのアプリケーションにリダイレクトされるようにSpringブートアプリケーションを設定したい。404を単一のページアプリケーションにリダイレクトするようにスプリングブートを設定する

たとえば、localhost:8080/asdasd/asdasdasd/asdasdが存在しない場合はlocalhost:8080/notFoundにリダイレクトする必要があります。

問題は、私は1ページの反応するアプリケーションがあり、それがルートパスlocalhost:8080/で実行されていることです。したがって、春はlocalhost:8080/notFoundにリダイレクトしてから/に転送してください(ルートを維持するため)。

+0

述べリソースを提供し、あなたの春のブートアプリです:あなたのSPAへ/notFoundへのルート、およびその転送(仮定エントリは/index.htmlである)404のエラーページを追加します。 ;もしそうなら、それを設定するためにBootで特別なことをしましたか、あるいはデフォルトに頼っていますか? リソースがはっきりと存在しない場合でも、HTTP 200 OKの*すべての*要求とインデックスページに返信するこの動作が間違っているとは思わないでしょうか? –

+0

Reactを使用して不明なページにリダイレクトすることを検討する必要があります。詳細については、[この質問](https://stackoverflow.com/q/32128978/1126831)を参照してください。 – ledniov

答えて

7

これはトリックを行う必要があります。

@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(現在開発中です。 M7)、 'EmbeddedServletContainerCustomizer'が' WebServerFactoryCustomizer'に変更されました。 Bean 'containerCustomizer'の署名は' WebServerFactoryCustomizer 'になります。 – n002213f

関連する問題