2014-01-30 69 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中,服務器就會提供索引頁面(它確實存在),並且您的客戶端代碼負責顯示「約」部分。

儘管它是第三方庫,但documentation for ui-router對於幾種服務器類型(包括Apache)都有很好的示例。