Konfigurieren von spring boot zu redirect 404 auf eine single page app
Möchte ich bei der Konfiguration meines Spring-Boot-app umleiten alle 404 nicht gefunden Anforderung an mein single page app.
Zum Beispiel, wenn ich rufe localhost:8080/asdasd/asdasdasd/asdasd
ist nicht vorhanden, es sollte eine Weiterleitung an localhost:8080/notFound
.
Das problem ist, dass ich eine einzelne Seite reagieren-app und es läuft im root-Pfad localhost:8080/
. Also Frühjahr sollte eine Weiterleitung an localhost:8080/notFound
und dann weiter zu /
(route).
Ist Spring-Boot-app dienen, die besagt Ressourcen; wenn ja, hast du etwas besonderes im Boot zu konfigurieren, oder werden Sie sich auf die defaults? Sie glaube nicht, dass dieses Verhalten falsch wäre, die Beantwortung von allen - Anfragen mit HTTP 200 OK " und Ihre index-Seite, auch wenn die Ressource eindeutig nicht vorhanden ist?
Ich denke, Sie sollten überlegen, Reagieren Umleitung zu unbekannten Seite finden Sie unter Fragen für details
Ich denke, Sie sollten überlegen, Reagieren Umleitung zu unbekannten Seite finden Sie unter Fragen für details
InformationsquelleAutor Vovan | 2017-06-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte dies der trick: Fügen Sie eine Fehlerseite für 404, - Strecken zu
/notFound
, und vorwärts, zu Ihrem SPA (vorausgesetzt, der Eintrag ist auf/index.html
):EmbeddedServletContainerCustomizer
verändert hatWebServerFactoryCustomizer
. Signatur für beancontainerCustomizer
wirdWebServerFactoryCustomizer<ConfigurableServletWebServerFactory>
Das ist die Antwort! Danke.
können Sie erzielen das gleiche Ergebnis mit der
@ExceptionHandler(ResourceNotFoundException.class)
?Bearbeitet in der version für Spring-Boot-2. Funktioniert Super hier!
Im Frühjahr Boot 2.0.2.RELEASE
container.addErrorPages
ist keine gültige MethodeInformationsquelleAutor Ralf Stuckert
Dies ist die komplette Spring-Boot-2.0 Beispiel:
Sie könnte verwenden Sie ein standard-rest-controller request-mapping-matches gegen eine Reihe von bekannten Wege (dh. Winkel-Routen etc.) in Ihrer Anwendung und zurück, vorwärts index.html Verwendung:
@Controller public class Angular2Html5PathController { @RequestMapping( method = {RequestMethod.OPTIONS, RequestMethod.GET}, path = {"/path1/**", "/path2/**", "/"} ) public String forwardAngularPaths() { return "forward:/index.html"; } }
dies sollte akzeptiert werden Antwort, denn es hält die Möglichkeit für die 404-Seite. Danke.
Vielen Dank, ich habe es als eine vorgeschlagene Antwort auf dieser Seite. (Obwohl technisch der OP ausdrücklich darum bittet, eine Lösung, die leitet jeden 404, so könnte er nicht einverstanden :-))
InformationsquelleAutor Jay Steven Hamilton
Falls jemand stolpert hier auf der Suche für how to handle Eckig/Reagieren/andere Routen und Wege in eine Spring-Boot-app - aber nicht immer zurück index.html für alle 404 - es kann getan werden, in einem standard-Spring-controller RequestMapping. Diese kann getan werden, ohne das hinzufügen von view-Controller und/oder das anpassen der container-Fehler-Seite.
Dem RequestMapping unterstützt wild cards, so können Sie es gegen ein set der bekannten Pfade (dh. Winkel-Routen etc.) in Ihrer Anwendung und nur dann wieder nach vorne index.html:
Andere option aus (geliehen von einer alten Feder Artikel hier: https://spring.io/blog/2015/05/13/modularizing-the-client-angular-js-and-spring-security-part-vii) ist die Verwendung einer Namenskonvention:
Den oben beschriebenen Konfiguration entsprechen alle Wege, die keinen Punkt enthalten und sind noch nicht zugeordnet zu einem anderen controller.
/
,/about
etc, aber nicht/cars/berlin
?Wenn ich dies ändern
"/{[path:[^\.]*}/**"
ich kann navigieren Sie zu untergeordneten Strecken, aber die CSS Dateien nicht mehr geladen. :/@RequestMapping(value = "/{[path:[^\\.]*}")
oder ähnliches ist nicht für mich arbeiten. Hat jemand etwas bekommen funktionsfähig?Ich glaube, es gibt einen syntax-Fehler in der Frühjahr-blog-post. Versuchen Sie, die [ vor-Pfad - @RequestMapping(value = "/{Pfad:[^\\.]*}"). Wenn das nicht hilft, schlage ich vor, Sie haben einen Blick auf diesen thread github.com/spring-guides/tut-spring-security-and-angular-js/... - diskutieren Sie das Thema. Den Kommentar, den ich link zeigt, wie ein servlet-filter, sondern z.B.
Oh, vielen Dank, ich werde es einmal versuchen.
InformationsquelleAutor joensson
Hier die Sicherheits-Konfiguration (SecurityConfig.java)
Wenn nicht alle Ressourcen-redirect auf die Fehlerseite
Fehler-Seite wie
InformationsquelleAutor Md. Maidul Islam
Einfach Umsetzung die org.springframework.boot.web.- servlet.Fehler.ErrorController hat den trick für mich. Ich benutze SpringBoot 2.0 mit Reagieren. (Wenn Sie daran interessiert sind, wie zu tun, dass hier ist ein boilerplate-Projekt von mir: https://github.com/archangel1991/react-with-spring)
Ich bin nicht sicher, warum dies funktioniert aber.
InformationsquelleAutor Márk Farkas