Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干网和pushstate与服务器配置有关_Javascript_Backbone.js_Pushstate - Fatal编程技术网

Javascript 主干网和pushstate与服务器配置有关

Javascript 主干网和pushstate与服务器配置有关,javascript,backbone.js,pushstate,Javascript,Backbone.js,Pushstate,关于这一点,我想进一步提出我的问题。我能够让pushstate在主干应用程序中正常工作。因此,当访问我的应用程序和导航链接时,我会被重定向到localhost:8000/页,而不是localhost:8000/页。现在,当重新加载localhost:8000/页时,我的问题变得很明显。显然,我的服务器将抛出一个错误,因为它找不到指定的页面。与localhost:8000/#page相反,后者将调用正确的路由。现在让我们假设我的应用程序位于以下localhost:8000/index.html。然

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

基本上,您需要在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>
对于实际的API调用,我在子域上提供它们,比如API.site.com。为此,您可能需要启用CORS

我在这篇博文中对此进行了更深入的讨论:

理想情况下,如果用户的入口点是/page,则可以在服务器端引导集合或模型,而不必重定向到/index.html(即处理数据时)/页面仍然可以使用与/index.html相同的布局模板进行响应,但会使用特定于/page的额外数据引导。
 rewrite ^(.+)$ /index.html last;