Angularjs:使用$ locationProvider.html5Mode修改网址

时间:2014-03-29 18:24:05

标签: angularjs

我正在尝试修改我的angularjs应用的网址。最初我的网址是http:localhost:8080 / a / web / app / index.html#/和http:localhost:8080 / a / web / app / index.html#/ next

当我将以下代码插入我的app.js

    var App =angular.module('App', [
     'ngCookies',
     'ngResource',
     'ngRoute',
    ])
   .config(function ($routeProvider,$locationProvider) {
    $routeProvider
    .when('/', {
    templateUrl: '/a/web/app/views/main.html',
    controller: 'ctrl_main'
    })
   .when('/next', {
    templateUrl: '/a/web/app/views/next.html',
    controller: 'ctrl_next'
    });        

  $locationProvider.html5Mode(true);
  });

我的新网址变成了http:localhost:8080和 http:localhost:8080 / next。 我的问题是当我尝试在http:localhost:8080 / next重新加载页面时,404 Not Found错误即将来临

2 个答案:

答案 0 :(得分:1)

预计将采用html5模式。如果您要求重新加载,浏览器将向其位置栏中的URL发送请求。

因此,您需要将服务器配置为实际发送回您在angular应用程序中使用的所有可收藏URL的index.html页面。整个页面将重新加载,角度应用程序将重新启动,$ route服务将重新启动,并将调用控制器并显示为URL配置的部分。

答案 1 :(得分:0)

我知道答案有点过时,但在我的情况下,为index.html添加<base>属性有帮助,例如:

<base href="/a/web/app/">