AngularJS路由,从URL中删除#

时间:2015-11-10 10:38:53

标签: angularjs url-routing

我正在使用AngularJS路由,并且我使用了许多技巧,但是'#'标志总是以URL形式出现。

请参阅我使用的示例/代码,但不是从URL中删除#符号。

angular.module('mod', []).
  config(['$routeProvider', '**$locationProvider'**, 
           function($routeProvider, **$locationProvider**) {

   $routeProvider.
      when('/first', { 
           templateUrl: 'first.html',   
           controller: 'firstCtrl'
   });

   $locationProvider.html5Mode(true);

  }]);

有人有解决方案吗?请分享。

2 个答案:

答案 0 :(得分:2)

你可以做任何事情

您需要使用a指定应用程序的基本URL  如果您的应用程序的根目录与URL不同(例如/ my-app,则使用它作为基础)。

<head>
    <meta charset="utf-8">

    <base href="">  
</head>

或者您可以配置

$locationProvider.html5Mode({
  enabled: true,
  requireBase: false
});

答案 1 :(得分:1)

我想出了同样的问题,并在Docs上找到了解决方案。

$locationProvider.html5Mode({
  enabled: true,
  requireBase: false
});

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

如果您将$ location配置为使用html5Mode(history.pushState),那么   需要使用a指定应用程序的基本URL   标记或配置$ locationProvider以不需要基本标记   使用requireBase:false传递定义对象   $ locationProvider.html5Mode():

我们做错了函数调用。试试这个,它会工作。你也可以check the docs