Mas*_*ini 8 backbone.js backbone-routing
我正在尝试实现{ pushState : true }它,但它只适用于基本路由,而不是与另一个继续给我错误404.
在Chrome中,如果我访问:
http://example.app/ - 确定显示控制台消息
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});
Run Code Online (Sandbox Code Playgroud)
我的.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>
Run Code Online (Sandbox Code Playgroud)
我错过了什么,或者我做错了什么?
McG*_*gle 15
请记住,Backbone是一个客户端框架 - 如果您使用基于路径的URL进行路由(推送状态),您仍需要确保服务器为这些URL返回正确的标记.这在Backbone docs中总结如下:
请注意,使用真实URL要求您的Web服务器能够正确呈现这些页面,因此也需要进行后端更改.例如,如果您的路径为/ documents/100,则如果浏览器直接访问该网址,则您的网络服务器必须能够提供该网页.对于完整的搜索引擎可抓取性,最好让服务器为页面生成完整的HTML ...但如果它是一个Web应用程序,只需呈现与根URL相同的内容,并使用Backbone填充其余内容视图和JavaScript工作正常.
换句话说,如果您的服务器不理解,Backbone无法帮助您example.app/show- 您必须使用URL重写和/或您选择的服务器端语言来修复服务器.