角度路由的Optinal哈希前缀

时间:2016-11-11 13:19:18

标签: angularjs routing hashbang

我目前正在尝试通过实现_escaped_fragment_-scheme(Google Docs)使角度应用程序可索引。我知道它已被弃用,但据我所知,经过一些研究和实验,它仍然是最安全的选择。

该方案要求使用hashbang #!作为“真实URI”的分隔符。以及URI的角度路由部分,即

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的第一个字符。

1 个答案:

答案 0 :(得分:0)

你必须删除!从$locationProvider.hashPrefix('!');$locationProvider.hashPrefix('');并添加$locationProvider.html5Mode(true); 并在头部sectoin <base href"/"/>的索引页面