angularjs - Angular 路由的可选哈希前缀

标签 angularjs routes hashbang

我目前正在尝试通过实现 _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/

相关文章:

node.js - 如何向路由传递参数?

ajax - 使用 Ajax 历史记录和书签时,使用 "#!"而不是 "#"总是好的吗?

javascript - Angular JSON-RPC : processing error

angularjs - 将对象从父 Controller 传递到隔离范围的子指令

javascript - AngularJS - 使用 ng-click 在新窗口中打开链接

javascript - 做像 Twitter、Hash-Bang 之类的链接 #!网址

angularjs - 如何在 AngularJS 中禁用 IE8 和 IE9 上的 #hashbang 重定向

javascript - 防止工具提示转换 HTML 实体

node.js - 从我的 api 到另一个 api 的 API GET 请求?

docker - 使用 ocelot 和 docker 服务使用路由 ApiGateway 时出错