我正在尝试实施{ pushState : true }
但它仅适用于基本路线,不适用于其他继续给我错误 404 的路线。
在 Chrome 中,如果我访问:
http://example.app/ http://example.app/- OK,控制台消息显示
http://example.app/show http://example.app/show- 返回错误404
我的路线是
var AppRouter = Backbone.Router.extend({
routes: {
'': 'index',
'show': 'show'
},
index: function() {
console.log('This is the index page');
},
show: function() {
console.log('This is the show page');
}
});
new AppRouter;
Backbone.history.start({pushState: true});
我的 .htaccess
<ifModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index
RewriteRule (.*) index.html [L]
</ifModule>
我错过了什么或者我做错了什么?
请记住,Backbone 是一个客户端框架 - 如果您使用基于路径的 URL 进行路由(推送状态),您仍然需要确保服务器返回这些 URL 的正确标记。这总结在主干文档 http://backbonejs.org/#History thusly:
请注意,使用真实 URL 需要您的 Web 服务器能够正确呈现这些页面,因此还需要进行后端更改。例如,如果您的路由为 /documents/100,则当浏览器直接访问该 URL 时,您的 Web 服务器必须能够提供该页面。为了获得完整的搜索引擎爬行能力,最好让服务器为页面生成完整的 HTML...但如果它是一个 Web 应用程序,只需呈现与根 URL 相同的内容,并使用 Backbone 填充其余部分视图和 JavaScript 工作正常。
换句话说,如果你的服务器不理解,Backbone 就无法帮助你example.app/show
-- 您必须使用 URL 重写和/或您选择的服务器端语言来修复服务器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)