从路由器,我怎样才能路由到 EmberJS 中完全不同的父路由



假设我有以下网址。

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所建议的那样,这可能是您开始阅读重定向指南的好地方。

我知道这并不总是一个选项,但你可能想看看让Web服务器这样做(nginx,Apache,S3,无论你使用什么(。

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