HTML5 History API自动路由刷新错误

000*_*000 12 javascript html5 spring-boot angular2-routing angular

我目前正在使用一个项目,在后端使用SpringBoot,在前端使用HTML5和Angular 2.

部署项目后,当我在浏览器中导航时,一切正常,直到我按下重新加载按钮.浏览器将显示错误页面.

白标错误页面

此应用程序没有/ error的显式映射,因此您将此视为回退.

2017年5月8日星期一10:16:14 CDT 2017

出现意外错误(type = Not Found,status = 404).

没有可用的消息

这显然是由于使用HTML 5历史记录API在浏览器URL中存储客户端导航.

因此,当我开始点击页面上的项目时,我看到URL会自动附加.

但是,当点击刷新时,这将成为一个问题,完整的附加URL将发送到无法理解它的服务器,因为该附加URL的特定映射不存在.

是否有修复此更新服务器端配置,以便任何未知的URL返回根index.html视图的视图?

例如,当我点击刷新时,被查询的URL只是根URL http://localhost:8080/root,而不是附加的URL.

这将使浏览器正确导航而不是尝试在服务器端执行此操作.

dav*_*ave 2

如果你看一下他们的角度教程,有一个相关的部分“使用自然路线”

使用简单的 Spring MVC 控制器,您可以自然化应用程序中的路由。您所需要的只是一种枚举服务器中 Angular 路由的方法。这里我们选择通过命名约定来做到这一点:所有不包含句点(并且尚未显式映射)的路径都是 Angular 路由,并且应该转发到主页:

@Controller
public class SpaController {
    @RequestMapping(value = "/{[path:[^\\.]*}")
    public String redirect() {
        return "forward:/";
    }
}
Run Code Online (Sandbox Code Playgroud)