如果没有#在URL中,Angularjs路由不起作用

时间:2016-07-01 14:48:35

标签: javascript angularjs redirect routes

我的angularjs路线有问题。我的简化路由配置如下:

App.config([ '$routeProvider', function( $routeProvider ) {

$routeProvider.
  when('/', {  
      redirectTo: '/home'
  }).
  when('/home', {
    templateUrl: 'home.html',
    controller: 'HomeCtrl'
  }).
  when('/404', {   
      templateUrl: '404.html'
  }).
  when('/500', {   
      templateUrl: '500.html'
  }).
  when('/:tabName', {   
      templateUrl: 'tabView.html',
      controller: 'TabContentCtrl'
  }).
  when('/:tabName/:widgetName', {    
      templateUrl: 'tabView.html',
      controller: 'TabContentCtrl'
  }).
  otherwise({                    
      redirectTo: '/404'
  });
}]);

问题在于,当我将网址http://myapphttp://myapp/放入浏览器时,它会将我重定向到任何地方,不会发生任何事情,甚至会重定向到404错误页面。当我将哈希值放到URL http://myapp/#时它开始工作,然后它按照我的预期工作。但是为什么我的应用程序http://myapphttp://myapp/的根URL的默认路由不起作用?

2 个答案:

答案 0 :(得分:2)

您只需要启用html5mode:

配置javascript

App.config([ '$routeProvider', function($routeProvider, $locationProvider) {
  $locationProvider.html5Mode(true);
}]);

<强>的index.html

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <base href="/">
  </head>
</html>

答案 1 :(得分:0)

这取决于您如何设置虚拟主机并指向您的根index.html?如果是,那么如果您输入http://myapp,肯定会转到http://myapp/#/home