使用angular从Hash重定向到HashBang

时间:2015-09-17 08:46:22

标签: angularjs redirect hashbang

我使用mvc c#发布了一个带有角度和AJAX调用的网站来创建一些客户端页面。我的一个链接看起来像这样:

www.website.com/App#/Index

我正在尝试设置一个hasbang解决方案,以使我的网站可以抓取。我成功地创建了hashbang设置,所以现在一个工作链接将如下所示:

www.website.com/App#!/Index

现在的问题是我在Facebook上的所有链接都不包含爆炸(!),因此这些链接已经死了。 如何从没有hashbang的第一个链接重定向到hashbang的链接?

我目前的路线:

app.config(['$routeProvider', '$locationProvider',
function ($routeProvider, $locationProvider) {
    $locationProvider.html5Mode(false).hashPrefix('!');
    $routeProvider
      .when('/Index', {
          templateUrl: '/Apps/Modules/IndexPublicAngular/Index.html', controller: 'IndexPublicController'
      });
}]);

1 个答案:

答案 0 :(得分:2)

我遇到了类似的问题,你需要使用hashbang而不是hash。 我不得不为此提出一个快速而肮脏的解决方案:

$rootScope.$watch(function () {
    return window.location.hash;
}, function (value) {
    if (value.indexOf('#!#') == 0) {
      setTimeout(function() {
        window.location.hash = value.replace('#!#','#!');
      })
    }
});

可能有一个更好的解决方案,但我没有深入调查,因为这只是书签网址的临时补丁等。请记住,因为这只会在角度已触及网址后触发,& #39;#'已被转换为#!#!#'通过角度。