从路由器,我如何路由到 EmberJS 中完全不同的父路由

From the router, how can I route to a completely different parent route in EmberJS

假设我有以下 URL.

www.mywebsite.com/foo/abc/def

在我的路由器中,它可能看起来像这样:

this.route('foo',  function() {
    this.route('fooo');
    this.route('foooo');
    this.route('abc', function() {
      this.route('def');
      this.route('def, {path: 'def.html'});
       // Some other routes
    }
    // Some other routes
}
// Some other Routes

那么,如果我希望我的 foo/abc/def 重定向到完全不同的地方,现在会发生什么。例如,bar/uvw/xyz。我怎样才能重定向到那里?有没有办法从路由器做到这一点?我可以在 /foo/abc/def 路由中编写转换逻辑,但这看起来有点乱。

我需要这样做的原因是因为我要将我们公司的一个网站转换到一个新的 Ember 网站。我们想更改某些产品的路由,但要确保保存了这些网页链接的人不会收到死链接。

您不能通过路由器执行此操作。您需要将重定向放在您的路线的 JavaScript 代码中。

正如@locks 所建议的那样,它可能是您开始阅读的好地方 Redirecting guides

我知道这并不总是一个选项,但您可能希望让网络服务器执行此操作(nginx、Apache、S3,无论您使用什么)。

这样做的主要好处是您的 Ember 应用根本不需要加载即可做出重定向决定。此外,它使您的 Ember 路由器代码更清晰,不用担心表示旧应用程序的 URL 结构。