2014-01-30 4 views
0

Я использую маршруты и партитуры AngularJS для определения структуры страницы моего сайта. Я использую режим HTML5, чтобы избежать hashbang. Навигация с одной страницы на другую осуществляется щелчком по ссылкам, но при обновлении страницы или при наборе URL напрямую я получаю ошибку 404, не найденную на странице. Как исправить эту проблему?AngularJS маршруты и их части

Вот урезанный HTML:

<!DOCTYPE html> 
<html lang="en" ng-app="myApp"> 
<head> 
    <meta charset="utf-8"> 
    <title>site</title> 
    <base href="/"> 
</head> 
<body ng-controller="MyController"> 
    <a href="/home">Site</a> 
    <ul> 
     <li><a href="/home">Home</a></li> 
     <li><a href="/about">About</a></li> 
     <li><a href="/contact">Contact</a></li> 
    </ul> 

    <div ng-view></div> 

    <script src="js/angular.min.js"></script> 
    <script src="js/angular-route.min.js"></script> 
    <script src="js/app.js"></script> 

</body> 
</html> 

Вот мой app.js:

angular.module('myApp', ['ngRoute']) 
    .config(function($locationProvider, $routeProvider) { 
     $locationProvider.html5Mode(true); 
     $routeProvider. 
      when('/home', { templateUrl: 'partials/home.html', }). 
      when('/about', { templateUrl: 'partials/about.html', }). 
      when('/contact', { templateUrl: 'partials/contact.html', }). 
      otherwise({ redirectTo: '/home' }); 
    }); 

function MyController($scope) { 

} 

Частичные страницы только испускают одну строки:

home partial 

или

about partial 

или

contact partial 

Я попытался это как на IIS7 и Apache, с теми же результатами, каждый раз.

Любая помощь будет очень признательна. Спасибо за ваше время.

ответ

2

Такое поведение звучит так, как будто сервер не настроен на использование режима html5. У вашего сервера нет ресурсов для подачи запросов на таких путях, как/home,/about и/contact. (Таким образом, 404.) Вам нужно настроить перезапись на стороне сервера, чтобы эти запросы просто служили вашей индексной странице. Таким образом, если вы вставляете url/about, сервер обслуживает страницу индекса (которая существует), и ваш код на стороне клиента заботится о частичном отображении «about».

Несмотря на то, что это сторонняя библиотека, documentation for ui-router имеет отличные примеры для нескольких типов серверов (включая Apache).

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