Der einfachste Weg, um das zu erreichen, was Sie wollen, ist die Implementierung eines benutzerdefinierten 404-Handlers.
diese params auf Ihre application.properties hinzufügen:
spring.resources.add-mappings=false
spring.mvc.throw-exception-if-no-handler-found=true
Erste Eigenschaft alle statischen Handhabung Ressource Standard entfernt, deaktiviert die zweite Eigenschaft Spring Standard White-Label-Seite (von Spring Standard fängt NoHandlerFoundException
und dient Standard-White-Label-Seite)
hinzufügen 404 Handler Ihre Anwendungskontext:
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.NoHandlerFoundException;
import javax.servlet.http.HttpServletRequest;
@ControllerAdvice
public class PageNotFoundController {
@ExceptionHandler(NoHandlerFoundException.class)
public String handleError404() {
return "redirect:/index.html";
}
}
Am Ende müssen Sie Ihre benutzerdefinierte Ansicht Resolver für die Bedienung Ihrer statischen Inhalt (index.html in diesem Fall)
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceView;
import org.springframework.web.servlet.view.UrlBasedViewResolver;
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/index.html").addResourceLocations("classpath:/static/index.html");
super.addResourceHandlers(registry);
}
@Bean
public ViewResolver viewResolver() {
UrlBasedViewResolver viewResolver = new UrlBasedViewResolver();
viewResolver.setViewClass(InternalResourceView.class);
return viewResolver;
}
}
Ihr index.html
sollte in /resources/static/
Verzeichnis platziert werden hinzuzufügen.