Необязательный префикс хеша для угловой маршрутизации

В настоящее время я пытаюсь сделать угловое приложение индексируемым, реализуя схему _escaped_fragment_ (Google Документы). Я знаю о том, что он устарел, но, насколько я могу судить после некоторых исследований и экспериментов, это все еще самый безопасный вариант.

Схема требует хэш-банга #! в качестве разделителя для «реального 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 маршрута.


person Marc    schedule 11.11.2016    source источник


Ответы (1)


надо удалить! от $locationProvider.hashPrefix('!'); до $locationProvider.hashPrefix(''); и добавить $locationProvider.html5Mode(true); и на индексной странице в головном разделе <base href"/"/>

person Zeeshan    schedule 07.05.2017