Ember.js ember cli url在使用手动返回键的服务器上不起作用(与链接到)

Ember.js ember cli url在使用手动返回键的服务器上不起作用(与链接到),ember.js,ember-cli,Ember.js,Ember Cli,服务器上部署了一个ember cli站点,该站点工作正常。通过{{link to}}的链接都工作得很好 但是,当用户(即我)手动输入url并点击return时。那么该站点就找不到了 The resource you are looking for has been removed, had its name changed, or is temporarily unavailable. 甚至更改工作url的参数(最初通过链接导航到) 然后简单地退格,将30改为20,然后按回车键 http://

服务器上部署了一个ember cli站点,该站点工作正常。通过{{link to}}的链接都工作得很好

但是,当用户(即我)手动输入url并点击return时。那么该站点就找不到了

The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
甚至更改工作url的参数(最初通过链接导航到)

然后简单地退格,将30改为20,然后按回车键

http://site/start/0/length/20
这是不可能的

localhost:4200
没有此问题

有没有人注意到这种恶行


实际上,我需要它用于oauth的
回调重定向。但是随后注意到,任何手动输入的url都不起作用。

如果您是从非内置Ember的任何web服务器(即非本地服务器)提供此服务,则需要有一个通配符规则,用于返回Ember应用程序的
index.html
文件,以查找网站基本url以下的任何内容。如果您只让您的基本url返回
index.html
文件,那么您的Web服务器会被无法识别的url弄糊涂,认为它没有什么可返回的。但是如果你的规则, 对于
baseUrl/*
返回
index.html
,您的余烬应用程序将运行正确的路由挂钩来建立应用程序上下文

,这是因为您的服务器(IIS?)正在尝试访问浏览器请求的完整路径(例如
/start/0/length/30
),并且在磁盘上找不到有效文件时返回
404

因此,您需要将web服务器配置为将请求代理/重写到正确的位置。假设您正在“根”目录中部署应用程序,则正确的位置是
/index.html
(由ember cli创建的文件)

不幸的是,我无法帮助您使用IIS,但我可以为您提供nginx的正确配置:

    location / {
        try_files $uri $uri/ /index.html;
    }
这表示“如果请求的URI不存在,则使用/index.html文件响应”


当您在
localhost:4200
上使用
ember server
时,您不会遇到相同的问题,因为它会自动透明地执行类似的操作。

这是一个重复,问题是

在ember cli的
environment.config
文件中设置了简单答案
locationType:hash
(从接受的答案复制)

这将在url中引入“#”,但不需要IIS更改

var ENV = {
   ...
   locationType: 'hash'
   ... };

你是怎么运作的?也就是说,它部署在诸如nginx或apache之类的web服务器上,或者您正在使用内置的
ember服务器
?内置的ember服务器没有问题。its部署在$%#@winblows机器上。我将指出,非cli版本使用了#index.html/start/0/length/30,并且功能正常。因此,它似乎是一个#函数,或者可能是一个可怕的windows服务器,因为ember服务器(localhost)在OSXS上工作正常,所以这里回答了这个问题,这听起来像是一个可靠的推测。您能指出如何修复该通配符规则吗?这是一种推测,因为当时您还没有指定如何为其提供服务。我几乎可以肯定这是一个问题。这是服务器规则。我不知道如何在`$%#@winblows machine`上设置规则,但无论您在哪里设置了返回
index.html
文件的规则,请确保该规则适用于与基本url匹配的任何路径,并带有
*
字符。此字符出现在ember cli中。“如果您已手动将environment.js中的locationType设置为hash或none,则需要更新tests/index.html,使其具有绝对路径(/assets/vendor.css和/testem.js与默认相对路径相比)。”我将进行试验,因为我不想弄乱`$%#@winblows machine`您的windows计算机正在刷新时解析url。它不知道如何提供与余烬相关的URL。它认为没有什么可以为
开始/0/length/30
服务。我不明白如何避免设置通配符规则来处理这种情况。不知何故,是否可以返回到non-ember cli(index.html散列)选项。不要忽视你所说的,配置windows完全是胡说八道。
var ENV = {
   ...
   locationType: 'hash'
   ... };