angularjs ngroute и htaccess переписать

Мне интересно, как работают angularjs ngRoute и htaccess rewrite вместе.

У меня работает ngRoute, поэтому я получаю такие URL:

http://domain.com/#/something/somestring

Но мне бы очень хотелось, чтобы этот результат:

http://domain.com/something/somestring

Другими словами, я хотел бы избавиться от /# в моих URL. Я делал это раньше с.htaccess и mod_rewrite.c и PHP, но я понятия не имею, как добиться того же результата с AngularJS. Любые указатели, учебные ссылки, статьи и т. Д., Которые объясняют, как это можно сделать, или просто пример, будут с благодарностью.

Несколько требований: я все еще должен быть в состоянии сделать свою маршрутизацию так же, как я делал до сих пор:

blogApp.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider.
      when('/page/:pagePermaLink', {
        templateUrl: './assets/templates/page.html',
        controller: 'pageCtrl'
      }).
      when('/article', {
       templateUrl: './assets/templates/article.html',
       controller: 'articleCtrl'
      }).
      otherwise({
        redirectTo: '/home',
        templateUrl: './assets/templates/page.html',
        controller: 'mainCtrl'
      });
  }]);

Строка запроса URL, например :pagePermaLink должен быть по-прежнему доступен из области:

blogCtrl.controller('pageCtrl', ['$scope', '$routeParams', '$http',
function($scope, $routeParams, $http) {
    var foo = $routeParams.pagePermaLink;
    // ...
}]);

1 ответ

Решение

Если вы уже сделали свои переписывания, вы должны просто установить $locationProvider.html5Mode(true), См. https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions

Также могут помочь похожие вопросы переполнения стека: Angular Direct Url без хеша $location / переключение между html5 и режимом hashbang / перезапись ссылок

Другие вопросы по тегам