允许 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.
我的问题类似于 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.