1

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

4

1 回答 1

0

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

阿帕奇虚拟主机:

<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/

于 2012-10-29T23:27:52.357 回答