我一直在 Backbone.js 上观看 PeepCode 的截屏视频,并用它完成了编码。
我已经完成了第一部分,现在我有一个这样的路由器:
routes: {
'': 'home',
'blank': 'blank'
}
我也有这个来启动应用程序:
$(function(){
window.App = new BackboneTunes();
Backbone.history.start({pushState: true});
});
现在,如果我输入 http://localhost:9292/#blank在 URL 栏中,它将我重定向到 http://localhost:9292/blank , 但如果我输入 http://localhost:9292/blank直接给出 404 消息。
这是正常的还是我这里有错误?
提前致谢。
最佳答案
对于那些认为上述答案不够充分的人:您要做的是让您的服务器将所有 URL 重新路由到您的 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,它需要更少的行并完成相同的事情。
关于javascript - Backbone.js pushState 不工作并给出 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7531603/