Использование $ routeProvider для перенаправления на маршруты за пределами Angular

Я написал часть веб-приложения на Angular. Чтобы убедиться, что все маршруты покрыты, я хотел добавитьredirectTo собственность на$routeProvider, поэтому недопустимые маршруты возвращаются в корень веб-приложения, которое не использует Angular.

Я пытался:

$routeProvider.otherwise({
    redirectTo: '/'
});

но, очевидно, это только маршруты в контролируемой Angular части URL, поэтому пользователи будут перенаправлены на URL, такой какhttp://app.com/angular-part-of-web-app#, вместоhttp://app.comгде я хотел бы, чтобы они пошли.

Я работал над этим, имея пустой партиал, действующий как страницу «404», а затем контроллер, который просто использует$window Объект для перенаправления на нужную страницу:

routes.js

// Redirect to site list.
$routeProvider.when('/404', {
    templateUrl: '/partials/404.html',
    controller: 'RedirectCtrl'
});

// Redirect to the 404 page.
$routeProvider.otherwise({
    redirectTo: '/404'
});

controllers.js

// Controller to redirect users to root page of site.
.controller('RedirectCtrl', ['$scope', '$window', function ($scope, $window) {

    $window.location.href = '/';
}]);

Тем не менее, это вызывает тревогу «слишком хаки, должно быть, лучше». Есть ли лучший способ сделать это в Angular?

РЕДАКТИРОВАТЬ:Угловые маршруты - перенаправление на внешний сайт? не дал ответа на тот же вопрос. Я собираюсь оставить свой вопрос открытым вместо того, чтобы пометить его как дубликат (на данный момент), поскольку, поскольку мир угловых движется так быстро, предыдущий ответ может больше не иметь места.

Ответы на вопрос(5)

Ваш ответ на вопрос