当前位置: 首页 > 面试题库 >

使用$ routeProvider重定向到Angular之外的路由

顾涵衍
2023-03-14
问题内容

我已经用Angular编写了Web应用程序的一部分。为了确保覆盖所有路由,我想在中添加一个redirectTo属性$routeProvider,以便将无效路由返回到不使用Angular的Web应用程序的根目录。

我试过了:

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

但是很明显,这仅在URL的Angular控制部分中进行路由,因此用户将被重定向到URL http://app.com/angular-part-of-web-app#,而不是http://app.com,我希望他们进入该URL 。

我已经解决了这一问题,方法是使用空白部分作为“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 = '/';
}]);

但是,这引爆了“太hacky,一定是更好的方法”的警钟。在Angular中有更好的方法吗?

编辑:角路由-重定向到外部站点?没有对同一个问题给出答案。我将保持开放状态,而不是将其标记为重复(暂时),因为Angular世界发展得如此之快,以前的答案可能不再如此。


问题答案:

上面带有/ 404的解决方案不适用于我。但是,这似乎工作

.otherwise({
    controller : function(){
        window.location.replace('/');
    }, 
    template : "<div></div>"
});

PS。我正在使用Angular 1.2.10



 类似资料:
  • 问题内容: 我有一些路线的角度应用程序,例如: 使用angular的html5路由模式,当您从应用程序内单击指向链接的链接时,这些链接可以正确解决,但是当您进行硬刷新时,这些链接当然会出现404错误。为了解决这个问题,我尝试实现基本的htaccess重写。 这适用于角度请求,但是当我尝试在我的域内加载脚本或进行ajax调用时,例如: 该脚本不会加载-它的请求被重定向,并且它尝试加载index.ht

  • 问题内容: 因此,我有一个登录页面(’/’)。此页面上是带有提交按钮的用户名和密码的登录表单。我有加载页面的app.get和一个app.post来接收表单的参数。但是,我的目的是要有一个app.post(’/ login’,function(req,res){// logic}); 没有/ login路由或页面要加载,这只会容纳登录本身的逻辑(验证用户名等)。是否有一种简单的方法来使帖子从’/’重

  • 我正在尝试用以下方法重定向无效的URL 我不想使用解决浏览器支持问题。 我正在使用grunt serve进行本地前端开发和封装,并在生产中与spring boot一起运行。

  • 问题内容: 在下面的Spring 3.1操作中,我必须做一些事情并将属性添加到POST请求中,然后通过POST将其重定向到外部URL(我不能使用GET)。 但是,使用此代码可以使用GET方法(属性附加到http://www.externalURL.com/)。如何使用POST方法?这是来自外部网址的必填项。 问题答案: 就像@stepanian所说的那样,您不能使用POST重定向。但是有几种解决方

  • 我遇到了以下情况: 我有一个反应路由器包装反应组件呈现3路由: 如果路由匹配/about,则将用户重定向到/about-new。 如果匹配路由,则显示关联组件。 如果请求的路由不存在,重定向用户到/404。 见现场示例。 我发现,当我点击链接导航到“关于”页面时,路线会变成 /404而不是“/关于新”,当我点击指向不存在路线的链接时,它会尝试导航到该路线而不是“/404”。 React路由器的预期

  • 问题内容: 我在Angular应用中用于路由。在典型的登录场景中,如果用户未登录,我会将用户重定向到登录URL。如果没有ui.router库,则可以将$ routeChangeStart事件与结合使用,效果很好。现在,我正在使用结合了的事件,但没有任何效果!它还会将我的浏览器发送到一个无限循环中。我从其他来源了解到,这是一个已知的错误,建议的解决方案都不适合我。而且,也不会重定向到登录页面。 这是