Как избавиться от `/#/` в URL-адресе при использовании Angularjs?

используя ng-view и

myApp.config(['$routeProvider', function($routeProvider) {
  $routeProvider.
      when('/', {
        templateUrl: '/partials/home',
        controller: 'homePage'
      }).      
      otherwise({redirectTo: '/login'});
}]);

все работает нормально, кроме URL, который показывает /#/ перед каждым адресом. Как избавиться от этого?


person Sangram Singh    schedule 03.10.2013    source источник
comment
На самом деле, этот образец сайта не делает того, что вы ищете. Он просто размещен в подкаталоге.   -  person SLaks    schedule 03.10.2013
comment
@SLaks спасибо за наводку!   -  person Sangram Singh    schedule 03.10.2013


Ответы (1)


введите $locationProvider и установите для html5mode значение true http://docs.angularjs.org/guide/dev_guide.services.$местоположение

myApp.config(['$routeProvider','$locationProvider', function($routeProvider, $locationProvider) {
  $routeProvider.
      when('/', {
        templateUrl: '/partials/home',
        controller: 'homePage'
      }).      
      otherwise({redirectTo: '/login'});
  $locationProvider.html5Mode(true);        // <-- Here comes the magic
}]);

помните, однако, что вам нужно будет настроить серверную часть для перенаправления всех ссылок на index.html.

person Nils Larson    schedule 03.10.2013
comment
@SangramSingh Ознакомьтесь с этим вопросом SO. Имейте в виду, что history.pushState — это функция HTML5, и она не будет работать в старых браузерах. - person Michael Benford; 03.10.2013