복붙노트

[SPRING] 봄 부팅시 알 수없는 요청을 index.html로 리디렉션

SPRING

봄 부팅시 알 수없는 요청을 index.html로 리디렉션

나는 각도 응용 프로그램을 봄 부팅 웹 응용 프로그램을 통해 제공 받으려고합니다. 이 작업을 매우 간단하게 수행하는 방법에 대한 많은 예제를 발견했습니다.

https://spring.io/blog/2015/01/12/spring-and-angular-js-a-secure-single-page-application#using-spring-boot-cli

https://github.com/zouabimourad/angular2-spring/tree/master/front

https://github.com/ehirsch/spring-angular2

그러나 이러한 예제는 매우 간단하며 기본적으로 각도가되는 정적 컨텐츠를 표시하는 방법을 기본적으로 보여줍니다.

그들 중 누구도 Angular2 앱이 "실제"리소스에 매핑하지 않는 URL을 처리하는 방법을 보여줍니다 (경로라고 생각합니다).

예 : 우리는 Angular app에 "/ login"경로를 가지고 있지만이 경우 @ Controller / @ RequestMapping ( "/ login")이 없기 때문에 스프링이 index.html을 렌더링 할 때 "/ 로그인".

일반적으로 Spring이 실제 자원을 사용할 수 없을 때마다 "index.html"을 렌더링하길 원합니다. 어떤 요청에 매핑되거나 찾을 수없는 모든 요청에 ​​대한 기본보기를 설정하는 방법이 있습니까?

htaccess 파일을 사용하여 이전에이 문제를 해결했으며 Apache에서이 문제를 처리했습니다.

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule . index.html [L]
   ErrorDocument 404 /index.html
</IfModule>

하지만이 경우에는 아파치 나 nginx를 사용할 수 없습니다.

해결법

  1. ==============================

    1.한 라운드를 마치면서 RequestMapping 주석에 Angular Routes를 추가하고 index.html에서 모두 지적했습니다.

    한 라운드를 마치면서 RequestMapping 주석에 Angular Routes를 추가하고 index.html에서 모두 지적했습니다.

    @RequestMapping({"/login", "/logout"})
    public String index() { return "index.html"; }
    

    편집 : 더 나은 일 라운드로서, 당신은 컨트롤러가 ErrorController를 구현하고, getErrorPath 메소드를 오버라이드 한 다음, catch-all (또는 missing missing) 메소드로 동작 할 / error에 대한 매핑을 추가 할 수 있습니다.

    @Controller
    public class TheOneController implements ErrorController {
    
        @RequestMapping("/error")
        public String index() {
            return "index.html";
        }
    
        @Override
        public String getErrorPath() {
            return "index.html";
        }
    }
    

    이제 index 메소드는 찾을 수없는 모든 것을 처리하고 index.html을 렌더링합니다.

  2. from https://stackoverflow.com/questions/42865084/redirect-unknown-requests-to-index-html-in-springboot by cc-by-sa and MIT license