骨干路由器:摆脱URL中的#

我得到骨干路由器工作

App.Router = Backbone.Router.extend({ routes: { "todo": "todo" }, todo: function() { alert(1); } }); Backbone.history.start(); 

当我转到url: domain:port /#/ todo时,这个效果很好

我希望这个工作没有#在URL中,我试着把文件中提到的pushState参数。

  Backbone.history.start({pushState: true}); 

这只是将#urlredirect到非哈希值

domain:port /#/ todo(redirect到==>)domain:port / todo

但是当我直接访问这个URL

域:端口/待办事项

它不起作用:“不能GET / todo”。

有没有什么办法,我可以使这个url没有#的工作呢?

您需要编写服务器端代码来为URL提供页面。

使用pushState只是告诉浏览器“我已经使用JS来改变页面的内容,所以它匹配你会得到,如果你问这个url”。

它不会导致内容匹配该url,您必须将其作为单独的任务来完成。