2015-01-14 117 views
0

我有以下途徑:AngularJs和HTML歷史

app.config(function($routeProvider, $locationProvider) { 
    $routeProvider 
     // route for the home page 
     .when('/', { 
      controller : 'ApplicationController', 
      controllerAs : 'controller', 
      templateUrl : 'includes/home/home.html', 
     }) 
     // route for the about page 
     .when('/Enterprise', { 
      templateUrl : 'includes/enterprises/home_enterprise.html', 
     }) 
     .otherwise({redirectTo : '/'}); 

    // use the HTML5 History API 
    $locationProvider.html5Mode(true); 
}); 

我的鏈接:

<li><a ng-click="controller.MoveToCompanyHome(1)"><i class="fa fa-home">My Link</i></a></li> 

我也有這行我的頭:

<base href="/admin2/" /> 

我的控制器的功能:

this.MoveToCompanyHome = function(id_company){ 
    $location.path('/Enterprise'); 
}; 

這工作正常,直到我試圖使用我的瀏覽器歷史記錄去上一頁。它試圖加載/企業,它不起作用(404)。我知道我的網頁只有在加載index.html(或/)但無法理解我的歷史記錄如何工作的情況下才能正常工作。 我試圖閱讀angularJs的文檔(https://docs.angularjs.org/guide/ $位置),但我無法讓我的歷史工作。

+0

不知道爲什麼這不起作用。點擊瀏覽器應該從緩存中加載。在網絡選項卡試圖請求/企業,然後返回404? –

回答

2

因爲您需要對服務器進行更改,因爲服務器上不存在/Enterprise,您將得到404。這些更改將取決於您用於託管角度應用程序的技術。

Angular documentation摘自:

HTML5模式

使用該模式需要URL重寫服務器端的,基本上你 不得不重寫所有的鏈接到你的應用程序 的入口點(如index.html)。

+0

我使用相互服務器(在OVH),我不認爲我有很多選項來配置它。 是否需要添加如下內容:RewriteEngine On RewriteRule admin2 /admin2/index.html ? – user2088807

+0

是的,在.htaccess文件中使用RewriteEngine RewriteRule。看看這個:http://www.josscrowcroft.com/2012/code/htaccess-for-html5-history-pushstate-url-routing/ –

+0

好吧,它現在似乎工作,謝謝! – user2088807