我使用backbone.js创建了一个小型网站。它托管在IIS 7中。
路由:
routes: {
"/": "index",
"": "index",
"detailedpage/:id": "detailedpage",
'*notFound': 'index'
}
我尝试复制/粘贴网址时遇到问题。 如果我想直接访问
它不起作用。我可以在开发工具中看到1234的内部服务器错误,路径“/ detailedpage”。
奇怪的是,如果我首先访问
并在复制/粘贴网址后
它正在发挥作用。
如果我需要在IIS中启用/禁用任何处理程序,请告诉我吗?
谢谢!
答案 0 :(得分:2)
由于骨干网正在进行路由,因此您的浏览器必须在加载之前拥有正确的内容。如果您希望将pushState
与Backbone
一起使用,则必须欺骗您的网络服务器为所有可能的路线提供相同的html页面。我们在IIS
中执行此操作的方式是.NET
路由设置,以便加载所需的主干资产,以便它可以直接进行路由。
或者,您可以在pushState
中停用Backbone.history.start()
并使用基于散列的路由。 (myurl /#/ myroute)
答案 1 :(得分:1)
这些是客户端路由,因此您以#开头。
答案 2 :(得分:1)
包含主题标签不是解决方案。它只是告诉浏览器什么是根URL。 根本原因可能是重定向到索引页面无法正常工作。
我所做的解决方案是将html放入MVC应用程序的视图中。所有请求都重定向到同一个控制器,该控制器返回此新视图。所以我确信所有请求都会重定向到索引页面。