我目前正在尝试通过实现 _escaped_fragment_-scheme ( Google Docs ) 使 Angular 应用程序可索引。我知道它已被弃用,但据我所知,经过一些研究和实验后,它仍然是最安全的选择。
该方案需要 hashbang #!
作为“真实 URI”和 URI 的 Angular 路由部分的分隔符,即
http://www.someuri.com/#!/dashboard
目前我使用默认#:
http://www.someuri.com/#/dashboard
我知道如何更改路由以使用“#!”:
angular.module('myApp').config([
'$locationProvider',
function($locationProvider) {
$locationProvider.hashPrefix('!');
}
]);
但是,这显然会破坏“旧”链接(如 http://www.someuri.com/#/dashboard )。
如何正确路由两种 URI 格式?
我试过这样配置路由:
app.config(function($urlRouterProvider) {
$urlRouterProvider
.when('!/imprint', '/imprint')
.when('!/blog', '/blog')
.when('!/blog/{blogPostId}', '/blog/{blogPostId}');
});
但它不起作用,我也不能将带有感叹号的状态定义为路由 URI 的第一个字符。
最佳答案
你必须删除!来自 $locationProvider.hashPrefix('!');
至 $locationProvider.hashPrefix('');
并添加 $locationProvider.html5Mode(true);
并在 head 部分的索引页 <base href"/"/>
关于angularjs - Angular 路由的可选哈希前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40548889/