允许 html5 和 hashbang 模式

Allowing both html5 and hashbang mode

我的问题类似于 this one,但我的目标是让 hashbang URL 静默重定向到 html5Mode 样式。我的意思是,当

example.com/#!/hello

进入,应该默默改成

example.com/hello

为了使现有链接保持有效。与旧浏览器的兼容性并不重要(因为 AFAIK angularjs 1.3 支持的所有内容都适用于 html5Mode)。

也许我只是误解了答案,但我在那里看不到。我已经让 html5Mode 正常工作,但我有点想要二合一。

您可以在 JS 中手动完成,如下所示:

window.location.replace(
    window.location.href.replace(new RegExp("^([^?]+/)#!/(.*)$"),
        function (all, s1, s2) { 
            return s1 + s2; 
        }
    )
);

这就是我的工作方式,我没有做任何特别的事情?如果我使用 Chrome 输入 mysite.com/angularapp/#/accounts/29,它会被替换为 mysite.com/angularapp/accounts/29

我的路由配置包含:

  function($locationProvider) {
    $locationProvider.html5Mode(true).hashPrefix("");
  }

我在 Angular 1.2.21,我不确定该行为是否会在 1.3.x.