关于服务器配置的主干和pushstate

时间:2012-06-22 08:02:16

标签: javascript backbone.js pushstate

我想就此question扩展我的问题。我能够让pushstate在我的Backbone应用程序中正常工作。因此,在访问我的应用程序和导航链接时,我被重定向到localhost:8000 / page而不是localhost:8000 / #page。现在我的问题在重新加载localhost:8000 / page时变得明显。显然我的服务器会抛出一个错误,因为它无法找到指定的页面。而不是localhost:8000 / #page,它将调用正确的路由。现在假设我的应用程序位于以下localhost:8000 / index.html。那么我是否必须要求将所有路由重定向到localhost:8000 / index.html。什么被认为是正确的方法?我发现这个gist基于Backbone和pushstate的node.js服务器配置。快速查看,好像所有请求都被重定向到应用程序文件(index.html)。它是否正确? IIS运气好吗?

1 个答案:

答案 0 :(得分:0)

基本上你需要在Apache或Nginx中使用一些重写规则。

Apache Vhost:

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /
   RewriteRule ^index\.html$ - [L]
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule . /index.html [L]
</IfModule>

Nginx的:

 rewrite ^(.+)$ /index.html last;

对于实际的API调用,我在子域上提供它们,例如api.site.com。为此,您可能需要启用CORS。

我在这篇博客文章中更深入地讨论了它: http://readystate4.com/2012/05/17/nginx-and-apache-rewrite-to-support-html5-pushstate/