在 EmberJS 分发应用程序中直接访问路由时出现错误 404

Posted

技术标签:

【中文标题】在 EmberJS 分发应用程序中直接访问路由时出现错误 404【英文标题】:Error 404 when directly access to a route in EmberJS distribution app 【发布时间】:2016-12-31 07:42:05 【问题描述】:

我用 EmberJS 开发了一个 web 应用程序,我想部署在一个真实的服务器上。

当我在 localhost 中使用环境开发和命令 ember s 进行测试时,一切正常,但是当我使用 ember build --environment=production 创建分发包并使用网络服务器(在我的情况下为 python -m SimpleHTTPServer 4200 以及 Apache 服务器)部署它时) 当我尝试直接访问路由时出现以下错误。

Error response

Error code 404.

Message: File not found.

Error code explanation: 404 = Nothing matches the given URI.

如果我输入myaddress:4200 并浏览链接,没有任何问题,但如果我想刷新网页或更改网址,则会发生错误 404。

【问题讨论】:

我不确定它是如何使用 python 完成的,但您需要将所有请求重定向到您的 index.html 文件,并且仅在文件存在时才允许请求通过。 @Kitler 我该怎么做?你用什么来创建你的部署服务器? Python SimpleHTTPServer的可能重复 这不是你说的问题的重复,因为我试图将它部署在 Apache 服务器中并且错误是相同的。路线不存在 Ember/Ember-Cli Serving through Apache throws 404的可能重复 【参考方案1】:

在检查问题Python SimpleHTTPServer 和 ember 存储库中的一个问题后,我实施的解决方案是通过 Apache 服务器执行部署并创建一个 .htaccess 文件将流量重定向到 index.html

Options FollowSymLinks

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

【讨论】:

请注意,这不适用于 python SimpleHTTPServer,需要 apache。 是的,我忘了包括我通过 Apache 提供服务。谢谢@Kitler!

以上是关于在 EmberJS 分发应用程序中直接访问路由时出现错误 404的主要内容,如果未能解决你的问题,请参考以下文章

如何在 EmberJS / Ember Data 中使用单个路由的多个模型?

EmberJS嵌套动态路由不会按预期重定向

EmberJs - 链接到多个动态路由,多个嵌套级别

emberjs - 如何使用路由器基础设施标记活动菜单项

我可以在 emberjs 中给视图显示动画吗

EmberJS:如何在同一条路线上加载多个模型?