我一直在观看Backbone.js上PeepCode的截屏视频,并用它完成了编码。
我已经完成了第一部分,现在,我有一个像这样的路由器:
routes: {
'': 'home',
'blank': 'blank'
}
我也有这个启动App:
$(function(){
window.App = new BackboneTunes();
Backbone.history.start({pushState: true});
});
现在,如果我在网址栏中输入http://localhost:9292/#blank,则会将我重定向到http://localhost:9292/blank,但如果我直接输入http://localhost:9292/blank,则会显示404消息。
这是正常的还是我在这里有错误?
提前致谢。
答案 0 :(得分:8)
对于那些认为上述答案不充分的人:您要做的是让您的服务器将所有网址重新路由到您的index.html页面,Backbone.js会为您处理路由。通过以下步骤,您可以在地址栏中保持URL相同的情况下执行此操作。
如果您使用Apache作为容器,则需要在应用程序的.htaccess文件中启用mod_rewrite模块。
在httpd文件中:
1)确保您的文档根目录的“覆盖”命令已启用“覆盖全部”而不是“覆盖无”
2)通过取消注释该行来启用mod_rewrite.so模块:
LoadModule rewrite_module modules / mod_rewrite.so
在应用程序的.htaccess文件中(如果没有,请创建一个):
1)如果你已经编写了 IfModule mod_rewrite.c 模块,那么将这些行复制到其中一个模块中:
RewriteEngine On RewriteRule ^ / [a-zA-Z0-9] + [/]?$ / index.html [QSA,L]
你应该有这样的东西:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^/[a-zA-Z0-9]+[/]?$ /index.html [QSA,L] </IfModule>
修改强>
注意:在Apache 2.2+中,您现在可以使用FallbackResource而不是mod_rewrite,它需要更少的行并完成同样的事情。
答案 1 :(得分:4)
您需要设置服务器以返回Backbone路由到的所有网址的相同页面。现在,它只从根URL提供页面。