2014-01-30 2 views
0

내 사이트의 페이지 구조를 설정하기 위해 AngularJS 경로 및 부분을 사용하고 있습니다. HTML5 모드를 사용하여 hashbang을 피합니다. 링크를 클릭하면 한 페이지에서 다음 페이지로 이동하지만, 페이지를 새로 고치거나 직접 URL을 입력하면 404 페이지가 표시되지 않는 오류가 발생합니다. 이 문제를 어떻게 수정합니까?AngularJS 경로 및 부분

home partial 

또는

:

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) { 

} 

부분 페이지는 단지 하나의 선을 방출 : 여기

<!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입니다 : 여기

는 벗었 HTML입니다
about partial 

또는

contact partial 

나는 같은 결과를 각 시간, IIS7와 아파치 모두에서이 작업을 시도했습니다.

도움을 주시면 감사하겠습니다. 시간 내 주셔서 감사합니다.

답변

2

이 동작은 서버가 html5 모드 사용을 처리하도록 구성되지 않은 것처럼 들립니다. 서버에는/home,/about 및/contact와 같은 경로에서 요청을 처리 할 자원이 없습니다. (그러므로 404.) 요청이 단순히 인덱스 페이지를 제공 할 수 있도록 서버 측 다시 쓰기를 구성해야합니다. 이렇게하면 url/about에 붙여 넣으면 서버가 인덱스 페이지를 제공하고 클라이언트 쪽 코드가 "about"부분을 표시합니다.

제 3 자 lib이지만, documentation for ui-router에는 Apache를 포함한 몇 가지 서버 유형에 대한 좋은 예가 있습니다.