我正在使用Grails 3.3.2和Angular(目前是Angular 5)构建应用程序。
在设置默认网址(例如http://localhost:8080)时,我已设置Grails以提供index.html,该index.html位于src / main / webapp中。我还设置了服务器来处理以/ api /作为REST端点启动的所有请求。
一切都运作良好。 Angular应用程序已加载,用户与应用程序交互并正确浏览路径,但当用户刷新页面时(例如按F5),他会收到404消息(找不到页面)。
这是因为请求服务器使用当前URL(例如http://localhost:8080/users),这是Angular应用程序中的有效路由,但它在服务器中不存在。
我想知道服务器是否可以提供相同的index.html,无论URL是什么,除了以/ api /开头的URL,并且Angular根据URL导航到正确的路由。例如,如果用户在用户页面中刷新页面,则服务器会提供index.html,Angular会导航到用户页面。
我有一个设置,每个服务器的请求,除了以/ api /开头的默认URL和URL,都会转到控制器,并且此控制器会重定向到默认URL。这解决了404的问题,但是当发生这种情况时,Angular app会转到第一条路线,而不是用户所在的路线。
如果有人可以帮助我,我非常感激。 感谢。
答案 0 :(得分:0)
主要问题是java在index.html上的角度路由可以起作用之前处理浏览器请求。
我的解决方案是放置索引控制器并将所有内容重定向到index.html,除了api和其他东西。也许你可以使用通配符/ users /**.
@RequestMapping(value = {"/","/users"}, method = RequestMethod.GET)
public String redirect() {
return "redirect:index.html";
}