Ember 在 localhost 上的页面刷新 404 apache 后给出 404
Posted
技术标签:
【中文标题】Ember 在 localhost 上的页面刷新 404 apache 后给出 404【英文标题】:Ember gives 404 after page refresh 404 apache on localhost 【发布时间】:2013-10-29 09:06:52 【问题描述】:这可能与不使用 rails 或在 couchapp 中托管有关,但我想在不涉及另一层代码的情况下解决这个问题。
我正在编写一个 Ember 应用程序,当我在除索引(主)路由之外的任何路由上刷新浏览器时,我得到一个 404。只有通过 Ember 代码(例如 #linkTo
s)才能访问路由或transitionTo
s.
Apache 版本:Server version: Apache/2.2.22 (Ubuntu)
【问题讨论】:
【参考方案1】:这听起来像是一个(或全部)模型挂钩的问题。由于 # 之后的所有内容都不会被发送回服务器,因此任何链接或转换都不会产生任何影响,
server/cow
与服务器相同server/cow#/comments/3/posts
。
也就是说,您可能一直在使用链接将模型向下传递到每个嵌套资源较低的位置,但是当它重新加载该路由时,url 中的参数将传递给模型挂钩以解析模型。
正如下面在 cmets 中所指出的,如果您不使用哈希标签(也就是使用 location:history 或 location:none),您需要在 ember 应用程序的根目录使用某种形式的 url 重写,以便您的网址。请注意,如果您选择其中一个选项,您会将应用程序的功能限制为现代浏览器 (http://caniuse.com/history)。
【讨论】:
在我做一个 jsbin 之前,我会这样说:我已经将location: 'history'
添加到我的 App.router
中,这应该是为了摆脱散列(我认为这很烦人)。不过,我不熟悉 Ember 的这种细微差别!你能指点我这方面的任何文档的方向吗?
我所说的“Ember 的细微差别”是指它与服务器的明显关系。这个错误实际上对我来说很有意义,因为当手动 url 请求完成时(通过刷新或手动输入),该请求被发送到服务器,而 Ember 甚至从未看到它。 Ember 是否有代码可以解释这一点?那是我从未见过但希望看到的文档。
啊,因为你没有使用 # 整个 url 被发送回服务器。那时听起来您的服务器不知道如何处理 url。您需要在 ember 应用程序的 rootUrl 之后找到一种忽略请求的方法(我认为这可以在 nginx 中非常简单地完成)
This guy 有完全相同的问题,但我没有找到他的答案,因为我没有意识到这与没有标签有关!编辑您的答案以指向那个或其他内容,我很乐意接受它!
还有the apache mod_rewrite page 详细说明了实际的 api。以上是关于Ember 在 localhost 上的页面刷新 404 apache 后给出 404的主要内容,如果未能解决你的问题,请参考以下文章
您如何在开发中从 https://localhost:4200 提供 ember-cli
如何在 Ember.js 中保存具有“日期”类型属性的模型?