我在Backbone.js中设置了一个简单的路由器,同时我注意到了一个问题,我用Google搜索了很长时间并找到了一些解决方案。
问题是每当我导航到一个网址时,这个网址都会在我在应用程序内部时工作,但是一旦你将它加入书签并返回它显然会返回404,因为该页面不存在。
Backbone.history.navigate('test', true);
这将导航到http://www.domain.com/test
,这很棒,但是一旦刷新相同的网址,它就会返回404.
有一些方法可以使用特定的.htaccess
文件来实现这一点,但我在现有网站中构建它,所以我不能使用它。
Backbone.js中是否有办法恢复使用hashbangs?我的网址看起来像这样`http://www.domain.com/#!/test 这可能不是最干净的URL,但至少它会起作用。
或者我只是错过了一些明显的东西?不可能我是唯一有这个问题的人。
答案 0 :(得分:1)
您根据自己的网址使用pushState
,因此您有两个主要选项:
pushState
(这相当于使用hashbang,但SEO除外)在第二种情况下,如果您不关心搜索引擎优化,您可以使用包含Backbone应用程序的所有规则始终返回(例如)index.html
。当您启动Backbone的历史记录时,它会抓住URL并导航到正确的页面(尽管您可能具有“双重渲染”效果)。
如果您担心SEO,您需要返回SEO的页面内容以及Backbone应用程序。