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


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

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

приложение.js:

app.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
    .state('state', {
        url: '/state',
        templateUrl: 'templates/state.html',
        onEnter: function () {
            /*... code ...*/
        }
    })});
.html:
<a href="#/state">STATE</a>

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

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

3 74

3 ответа:

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

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

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

<base href="/">

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

Если вы используете Угловое 1.6+, вам также нужно будет удалить hashPrefix из URL:

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

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

<head>
    ...
    <base href="/">
</head>
    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'         
            })
    }

в свой индекс.php или индекс.html в tag insert

< base href="/" >

на CodeIgniter:

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