我想就此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运气好吗?
答案 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/