AngularJS:Hashbang URL在完全刷新时会自动附加到自身

时间:2013-05-30 06:00:16

标签: javascript angularjs

我有一个angularJS应用程序,配置如下:

$locationProvider.html5Mode(true);
$locationProvider.hashPrefix('!');

所以在现代浏览器中,它与pushstate一起使用没有问题,例如URL将是:

http://myapp.com/members

在旧版浏览器中,例如IE9,当我浏览到该URL时,它按预期将其重写为:

http://myapp.com/members#!/members

点击此处的任何链接都会使用hashbang方法,也是正确的:

http://myapp.com/members#!/members/add

...然而

如果我在一个hashbang重写的url上完全重新加载页面,它将继续将哈希附加到自身。第一次刷新:

http://myapp.com/members#!/members#!/members#!%2Fmembers

..和第二次刷新:

http://myapp.com/members#!/members#!/members#!%2Fmembers#!/members#!%2Fmembers%23!%2Fmembers%23!%2Fmembers

这里发生了什么可能导致这种情况?通常它不会发生,因为人们将在应用程序内导航并且角度将处理网址,但完全重新加载似乎打破了它。感谢。

2 个答案:

答案 0 :(得分:6)

尝试设置

<base href="/" /> 
头上?它可能是一个有角度的1.1.5错误/特征。

答案 1 :(得分:1)

<base>中放置<head>标签似乎是要走的路......

<head>
    <base href="/">
</head>

......但可能还有更多工作需要完成。我也将$locationProvider设置为html5Mode,并在加载页面时出错。

myAngularModule.config($locationProvider =>
{
    $locationProvider.html5Mode({
        enabled: true,
        requireBase: false,
        rewriteLinks: false
    });
});

对于html5Mode,我还必须configure my server