Припустимо, у мене є така 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. І ми хочемо змінити маршрути до деяких наших продуктів, але переконайтеся, що люди, які зберегли посилання на ці веб-сторінки, не отримають померлих посилань.
Відповіді:
2 для відповіді № 1Ви не можете цього зробити через маршрутизатор. Потрібно розмістити свої переадресації всередині коду JavaScript вашого маршруту.
Як @locks припустив, що це може бути хорошим місцем для початку з читання Напрямні перенаправлення.
1 для відповіді № 2
Я знаю, що це завжди не завжди, але ви можете поглянути на те, як веб-сервер це робить (nginx, Apache, S3, що б ви не використовували).
Основна перевага цього в тому, що ваш додаток Emberзовсім не потрібно завантажувати рішення для перенаправлення. Крім того, він зберігає код маршрутизатора Ember чистішим, не переживаючи про представлення структури URL-адреси старого додатка.