2016-07-01 3 views
2

У меня проблема с моими маршрутами angularjs. Моя упрощенный маршрут конфигурация выглядит следующим образом:Маршрут Angularjs не работает без # в URL

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' 
    }); 
}]); 

Проблема заключается в том, когда я ставлю URL-адреса http://myapp или http://myapp/ в браузер, он перенаправляет меня нигде, ничего не происходит, даже перенаправление на странице 404 ошибки. Он начинает работать, когда я помещаю хеш в URL http://myapp/#, тогда он работает так, как я ожидал. Но почему мой маршрут по умолчанию для корневого URL-адреса приложения http://myapp и http://myapp/ не работал?

ответ

1

Вам просто нужно активировать 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> 
0

Это зависит от того, как вы установите виртуальный хост и он указывает на ваш root index.html? Если да, то, если вы наберете http://myapp, это определенно приведет вас к http://myapp/#/home

Смежные вопросы