键入特定网址时,Ember应用会呈现空白页

时间:2015-10-26 21:11:47

标签: ember.js nginx

在我的Ember应用程序中,如果我在本地开发,我可以通过转到网址http://localhost:4200/some/page直接转到页面。我也可以在应用程序内导航到该页面。

然而,在我的应用程序部署后,我转到https://dev.myapp.com我能够在网站上导航很好但是如果我尝试直接转到网址(例如https://dev.myapp.com/some/page),那么浏览器中没有呈现任何内容,DOM完全为空。但是,如果我将https://dev.myapp.com/输入浏览器,我就可以再次开始浏览该应用。

这是否与我如何构建或部署我的应用程序有关,或者这可能是我在Ember应用程序中配置错误的东西?

我还应该补充说我正在使用Nginx部署我的应用程序。

1 个答案:

答案 0 :(得分:0)

当您使用history based locations时,Ember会在导航期间修改浏览器URL,但不会向Web服务器发出实际文档GET请求。当您直接刷新并请求特定路由时,Web服务器会尝试提供相应的文件,该文件因文件不存在而失败。

无论请求哪个文件,您都必须告诉您的网络服务器始终提供index.html,然后让Ember发挥魔力。详细配置取决于您的网络服务器。

这适用于Apache 2:

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

旧的Ember App Kit文档在页面底部有more examples