我正在使用Backbone和Yeoman构建应用程序。我遇到了路由问题。
我设置了以下路线:
'test' : testMethod,
'' : index
我已经设置了pushstate:
Backbone.history.start({pushState: true});
我正在使用Chrome
如果输入myApp.com#test
,则网址更改为myApp.com/test
并testMethod()
正确触发。
但是,如果我直接尝试转到myApp.com/test
或在浏览器将网址从#更改为/后刷新,那么我会得到404.
我使用Yeoman内置服务器来测试页面。这会导致这个问题吗?
答案 0 :(得分:3)
我不确定你是否在Yeoman中使用BBB。如果你是,这应该不是问题。如果您没有使用BBB,这是一个已知的issue。 BBB正确设置了重写规则以使用pushstate,但是yeoman内置的服务器似乎并没有采用这种方式。您可以使用自己的重写规则编辑grunt.js文件,以使pushstate正常工作。上述链接中的一些用户已成功完成此操作。
当您的应用程序上线时,您需要通过服务器提供这些网址,或者编辑重写规则以执行相同操作。如果是后者,而你的应用程序依赖于搜索引擎优化,搜索引擎优化将受到很大影响。