angularjs ngroute 和 htaccess 重写

angularjs ngroute and htaccess rewrite

我想知道如何工作angularjs ngRoute 和 htaccess 一起重写。

我有 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;
    // ...
}]);

如果您已经完成重写,您应该可以设置 $locationProvider.html5Mode(true)。参见 https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-configure-your-server-to-work-with-html5mode

此外,类似的堆栈溢出问题可能会有帮助: $location / switching between html5 and hashbang mode / link rewriting