我已经用Angular编写了Web应用程序的一部分。为了确保覆盖所有路由,我想在中添加一个redirectTo属性$routeProvider,以便将无效路由返回到不使用Angular的Web应用程序的根目录。
redirectTo
$routeProvider
我试过了:
$routeProvider.otherwise({ redirectTo: '/' });
但是很明显,这仅在URL的Angular控制部分中进行路由,因此用户将被重定向到URL http://app.com/angular-part-of-web-app#,而不是http://app.com,我希望他们进入该URL 。
http://app.com/angular-part-of-web-app#
http://app.com
我已经解决了这一问题,方法是使用空白部分作为“404”页面,然后使用该$window对象将控制器重定向到所需页面:
$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 = '/'; }]);
但是,这引爆了“太hacky,一定是更好的方法”的警钟。在Angular中有更好的方法吗?
编辑:角路由-重定向到外部站点?没有对同一个问题给出答案。我将保持开放状态,而不是将其标记为重复(暂时),因为Angular世界发展得如此之快,以前的答案可能不再如此。
上面带有/ 404的解决方案不适用于我。但是,这似乎工作
.otherwise({ controller : function(){ window.location.replace('/'); }, template : "<div></div>" });
PS。我正在使用Angular 1.2.10