我们有一个现有的MVC5 Web应用程序,大部分都使用Backbone和Backbone路由。当你到达网站时,它会加载原始的基本home / index.html,它会加载所有Backbone脚本等等。
我们正在推出Angular2(版本:2.0.1),并为我们的NgController提供了一个新的index.html页面。
目前,我们的应用程序使用哈希位置策略;一旦应用程序加载,路由就会控制URL,我们会从以下内容中获取:
http://blah.com/ng/#/reports
到
http://blah.com/#/reports
这通常很好,并且在角度应用内浏览会将网址更改为/#/ pageXyz等。 ...直到您尝试直接刷新或深入链接到后面的示例,其中浏览器在技术上只是去
http://blah.com
提供原始的Backbone索引页面。
解决此问题的选项有哪些?
一夜之间,Angular网站似乎已经获得incomplete teaser page来设置VS2015(注意:我们目前正在使用VS2013),并且在最底层让您处于悬崖边缘,似乎与问题相关:
关于路由应用程序的注意事项
如果此应用程序使用Angular路由器,浏览器刷新可能会返回404 - 找不到页面。看看地址栏。它是否包含导航网址("深层链接")?我们必须配置服务器以返回这些请求的index.html。在此之前,请删除导航路径并再次刷新。
提前致谢。
答案 0 :(得分:0)
最终改变了Backbone路由。
优点:它有效并且只有两行:
#restore angular url
if location.pathname == '/' and location.hash.substring(0,2) == '#/'
location.href = location.href.replace('/#/','/ng/#/')
缺点:在刷新/深层链接上,您将获得两个完整页面加载 - 首先进入主页/索引加载主干,然后进入重定向后的ng / index加载角度。
但是,考虑到所有事情,它的工作原理对我来说已经足够了。