[SPRING] 404 페이지를 단일 페이지 앱으로 리디렉션하도록 스프링 부팅 구성
SPRING404 페이지를 단일 페이지 앱으로 리디렉션하도록 스프링 부팅 구성
내 404 페이지를 찾을 수없는 요청을 내 단일 페이지 응용 프로그램으로 리디렉션하도록 Spring Boot 응용 프로그램을 구성하려고합니다.
예를 들어 localhost : 8080 / asdasd / asdasdasd / asdasd가 존재하지 않는다면 localhost : 8080 / notFound로 리디렉션되어야합니다.
문제는 하나의 페이지에 반응하는 앱이 있으며 로컬 호스트 인 localhost : 8080 /에서 실행된다는 것입니다. 따라서 봄은 localhost : 8080 / notFound로 리디렉션 한 다음 / (경로 유지)로 전달해야합니다.
해결법
-
==============================
1.이것은 트릭을 수행해야합니다 : / notFound로 라우트하는 404에 대한 오류 페이지를 추가하고이를 SPA로 전달하십시오 (항목이 /index.html에 있다고 가정).
이것은 트릭을 수행해야합니다 : / notFound로 라우트하는 404에 대한 오류 페이지를 추가하고이를 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")); }; } }
-
==============================
2.이것은 전체 Spring Boot 2.0 예제입니다.
이것은 전체 Spring Boot 2.0 예제입니다.
@Configuration public class WebApplicationConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/notFound").setViewName("forward:/index.html"); } @Bean public WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> containerCustomizer() { return container -> { container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/notFound")); }; } }
-
==============================
3.누군가가 Spring Boot 애플리케이션에서 Angular / React / 다른 경로와 경로를 다루는 방법을 찾고자한다면, 표준 404 컨트롤러에서 index.html을 반환하지 않을 수도 있습니다. 이는 표준 Spring 컨트롤러 RequestMapping에서 수행 할 수 있습니다. 뷰 컨트롤러를 추가하거나 컨테이너 오류 페이지를 사용자 정의하지 않고도이 작업을 수행 할 수 있습니다.
누군가가 Spring Boot 애플리케이션에서 Angular / React / 다른 경로와 경로를 다루는 방법을 찾고자한다면, 표준 404 컨트롤러에서 index.html을 반환하지 않을 수도 있습니다. 이는 표준 Spring 컨트롤러 RequestMapping에서 수행 할 수 있습니다. 뷰 컨트롤러를 추가하거나 컨테이너 오류 페이지를 사용자 정의하지 않고도이 작업을 수행 할 수 있습니다.
RequestMapping은 와일드 카드를 지원하므로 응용 프로그램에서 잘 알려진 경로 집합 (예 : 각도 경로 등)과 일치시킬 수 있으며 앞으로 만 index.html을 반환 할 수 있습니다.
@Controller public class Html5PathsController { @RequestMapping( method = {RequestMethod.OPTIONS, RequestMethod.GET}, path = {"/path1/**", "/path2/**", "/"} ) public String forwardAngularPaths() { return "forward:/index.html"; } }
또 다른 옵션은 (https://spring.io/blog/2015/05/13/modularizing-the-client-angular-js-and-spring-security-part-vii) 이전 Spring 기사에서 빌린 것입니다. 명명 규칙 :
@Controller public class Html5PathsController { @RequestMapping(value = "/{[path:[^\\.]*}") public String redirect() { return "forward:/index.html"; } }
위의 구성은 마침표가없고 다른 컨트롤러에 아직 매핑되지 않은 모든 경로와 일치합니다.
from https://stackoverflow.com/questions/44692781/configure-spring-boot-to-redirect-404-to-a-single-page-app by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 보안 된 엔드 포인트에만 스프링 보안 필터를 적용하는 방법은 무엇입니까? (0) | 2019.01.16 |
---|---|
[SPRING] @Transactional 및 Spring 보안 @PreAuthorize의 순서 (0) | 2019.01.16 |
[SPRING] Spring의 정적 상수 값 삽입 (0) | 2019.01.16 |
[SPRING] 스프링 3.0 폼 입력 요소에 HTML5 자리 표시 자 속성 추가 (0) | 2019.01.16 |
[SPRING] 스프링 JPA 저장소 동적 쿼리 (0) | 2019.01.16 |