Angular JS默认url没有哈希

时间:2014-12-09 16:58:37

标签: angularjs routes

目前我的html5模式在我的角色网站中转为url。

但我只是想知道是否有我的默认网址加载没有“#!/”即域名/#!/,我知道当我切换到路线时我会把它恢复但是会很好没有它在默认的url主页。

这是我当前的routeprovider

app.config(['$routeProvider','$locationProvider', function($routeProvider,$locationProvider){
  'use strict';
  $routeProvider
    .when('/',{
      templateUrl: '/views/search.html',
      controller : 'SearchCtrl'
    })
    .when('/result',{
      templateUrl: '/views/result.html',
      controller : 'resultCtrl'
    })
    .when('/options',{
      templateUrl: '/views/options.html',
      controller : 'optionsCtrl'
    })
    .otherwise({
      redirectTo: '/'
    });
  $locationProvider.html5Mode(false);
  $locationProvider.hashPrefix('!');
}]);

2 个答案:

答案 0 :(得分:9)

Hashbang模式是html5的后备,所以

  • 使用html5
  • hack angularjs
  • 将主页置于角度应用之外
  • 在Web服务器上重写/转发网址

详细了解$location

答案 1 :(得分:0)

如果您不使用服务器端语言,请将此代码放在html头中。

<base href="/">

喜欢:

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

并将其放入配置块:

$locationProvider.html5Mode(true);

如果您使用的是服务器端语言,请使用以下代码:

app.get('*', function(req, res) {
    res.render('index');
});

保证

app.get('/', function(req, res) {
    res.render('index');
});

并将此代码放在配置块中:

$locationProvider.html5Mode(true);