Как удалить знак '#' в angular -ui-router URLs

Я использую библиотеку angular -ui-router, и у меня проблема с URL-адресами.

У меня есть следующий код:

app.js:

app.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
    .state('state', {
        url: '/state',
        templateUrl: 'templates/state.html',
        onEnter: function () {
            /*... code ...*/
        }
    })});

index.html

<a href="#/state">STATE</a>

Это работает, но когда я удаляю '#' из тега <a>, это не работает.

Как я могу удалить знак '#' из URL?

Ответ 1

Вам нужно включить HTML5Mode, если вы хотите навигация без хэш-тегов:

app.config(["$locationProvider", function($locationProvider) {
  $locationProvider.html5Mode(true);
}]);

Вам также нужно указать angular корневой URL вашего приложения, добавив следующий код в <head> вашего HTML файла:

<base href="/">

Помните, что поддержка режима HTML5 зависит от браузера. Для тех, кто не поддерживает API истории, Angular будет возвращаться к hashbang.

Ответ 2

Если вы используете Angular 1,6 +, вам также необходимо удалить hashPrefix из URL-адреса:

appModule.config(['$locationProvider', function($locationProvider) {
  $locationProvider.hashPrefix(''); // by default '!'
  $locationProvider.html5Mode(true);
}]);

Не забудьте также изменить базу:

<head>
    ...
    <base href="/">
</head>

Ответ 3

    yourApp.config(function ($stateProvider, $urlRouterProvider,$locationProvider) {

    $urlRouterProvider.otherwise('/home');

    //add this line in your routing code   
    $locationProvider.html5Mode(true);

    $stateProvider.state('web.home', {
                url: '/home',
                templateUrl: 'pages/home.html',
                controller: 'mainController'         
            })
    }

в вашем index.php или index.html в <head> tag insert

< base href="/" >

для CodeIgniter:

<base href=" < ?php echo base_url() ?  >" >