骨干 - 复制粘贴网址

时间:2014-02-06 22:50:22

标签: javascript backbone.js iis-7 single-page-application

我使用backbone.js创建了一个小型网站。它托管在IIS 7中。

路由:

 routes: {
            "/": "index",
            "": "index",
            "detailedpage/:id": "detailedpage",
            '*notFound': 'index'
        }

我尝试复制/粘贴网址时遇到问题。 如果我想直接访问

  

http://www.anydomain.com/detailedpage/1234

它不起作用。我可以在开发工具中看到1234的内部服务器错误,路径“/ detailedpage”。

奇怪的是,如果我首先访问

  

http://www.anydomain.com/

并在复制/粘贴网址后

  

http://www.anydomain.com/detailedpage/1234

它正在发挥作用。

如果我需要在IIS中启用/禁用任何处理程序,请告诉我吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

由于骨干网正在进行路由,因此您的浏览器必须在加载之前拥有正确的内容。如果您希望将pushStateBackbone一起使用,则必须欺骗您的网络服务器为所有可能的路线提供相同的html页面。我们在IIS中执行此操作的方式是.NET路由设置,以便加载所需的主干资产,以便它可以直接进行路由。

或者,您可以在pushState中停用Backbone.history.start()并使用基于散列的路由。 (myurl /#/ myroute)

答案 1 :(得分:1)

这些是客户端路由,因此您以#开头。

http://www.anydomain.com/#detailedpage/1234

答案 2 :(得分:1)

包含主题标签不是解决方案。它只是告诉浏览器什么是根URL。 根本原因可能是重定向到索引页面无法正常工作。

我所做的解决方案是将html放入MVC应用程序的视图中。所有请求都重定向到同一个控制器,该控制器返回此新视图。所以我确信所有请求都会重定向到索引页面。