Verwenden von $ routeProvider, um zu Routen außerhalb von Angular umzuleiten

Ich habe einen Teil einer Webanwendung in Angular geschrieben. Um sicherzustellen, dass alle Routen abgedeckt sind, wollte ich eine hinzufügenredirectTo Eigentum an der$routeProvider, damit ungültige Routen an das Stammverzeichnis der Webanwendung zurückgegeben werden, die Angular nicht verwendet.

Ich habe es versucht:

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

Dies wird jedoch offensichtlich nur im von Angular kontrollierten Teil der URL weitergeleitet, sodass Benutzer zu einer URL wie der folgenden weitergeleitet werdenhttp://app.com/angular-part-of-web-app#, anstatthttp://app.com, wohin ich möchte, dass sie gehen.

Ich habe das umgangen, indem ich einen leeren Teil als '404'-Seite verwendet habe und dann einen Controller, der nur die$window Objekt, um auf die gewünschte Seite umzuleiten:

routes.js

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

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

controller.js

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

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

Dies löst jedoch die Alarmglocken „Too Hacky, muss ein besserer Weg sein“ aus. Gibt es eine bessere Möglichkeit, dies in Angular zu tun?

BEARBEITEN:Winkelrouten - Weiterleiten an einen externen Standort? gab keine Antwort auf die gleiche Frage. Ich werde meine Frage offen lassen, anstatt sie (vorerst) als Duplikat zu markieren, da sich die Angular-Welt so schnell bewegt, dass die vorherige Antwort möglicherweise nicht mehr der Fall ist.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage