在Springboot中将未知请求重定向到index.html

我正在尝试通过springboot Web应用程序提供Angular2应用程序。我已经找到了许多非常简单的方法示例:

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

但是,这些示例非常简单,它们基本上只是显示了如何显示碰巧是Angular的静态内容。

它们都没有显示如何处理Angular2应用程序使用的任何URL(我称它们为路由),这些URL不会映射到“真实”资源。

例如。Angular应用程序中有一个“ / login”路由,但是对此没有@ Controller / @ RequestMapping(“ /

login”),我希望Spring在看到对“ /”的请求时呈现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>

但是在这种情况下,我不能使用apache或nginx。

回答:

作为一项全面的工作,我在RequestMapping注释中添加了“角线”,并将它们全部指向index.html

@RequestMapping({"/login", "/logout"})

public String index() { return "index.html"; }

编辑:作为一种更好ErrorControllergetErrorPath方法,您可以使控制器实现,重写该方法,然后添加一个映射,/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

以上是 在Springboot中将未知请求重定向到index.html 的全部内容, 来源链接: utcz.com/qa/430371.html

回到顶部