AngularJs和HTML历史

时间:2015-01-14 22:22:32

标签: javascript angularjs html5

我有以下路线:

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

这很好用,直到我尝试使用浏览器历史记录转到上一页。它尝试加载/ Enterprise并且它不起作用(404)。我知道我的页面只有在加载index.html(或/)时才能工作,但无法理解我的历史记录是如何工作的。 我试图阅读angularJs的文档(https://docs.angularjs.org/guide/ $ location),但我无法使我的历史工作。

1 个答案:

答案 0 :(得分:2)

您收到的是404,因为您需要对服务器进行更改,因为服务器上不存在/Enterprise。这些更改将取决于您用于托管角度应用程序的技术。

取自Angular documentation

  

HTML5模式

     

使用此模式需要在服务器端重写URL,基本上是您   必须重写所有链接到您的应用程序的入口点   (例如index.html)。