ui-router返回:"无法GET / page"

时间:2014-11-13 08:41:06

标签: javascript angularjs angular-ui-router

我正在使用ui-router,并且状态为profile,如下所示:

.state('profile', {
    url: "/profile",
    templateUrl: "views/profile.html",
    controller: 'ProfileCtrl',
    resolve: {
      currentUser: function(gamAuth){
        return gamAuth.checkCurrentUser(config.userRol.user)
      }
    }

当我尝试重新加载/刷新页面时,我收到以下消息:

Cannot GET /profile

当我在http://localhost:9000/处重新加载“目标网页”时,问题不会发生,$stateProvider具有以下状态:

.state('home', {
    url: "/",
    [...]
})

我正在使用:$locationProvider.html5Mode(true);

我尝试按照决策树here

中的建议提供绝对网址

我也尝试过在线发现的一些建议,最流行的是这些内容(将其放在app.run()部分):

$state.transitionTo($state.current, $stateParams, {
    reload: true,
    inherit: false,
    notify: true
});

我的<base href="/">的{​​{1}}中存在<head>标记,但未测试所有方法。 谢谢你的时间。

2 个答案:

答案 0 :(得分:2)

如果您想使用不带“#”前缀的网址,则需要将html5mode设为true。

您还需要按照here

添加modRewrtie

<强>先决条件:

npm install --save-dev connect-modrewrite

答案 1 :(得分:1)

启用html5Mode后,您的网址中将不再使用#字符。 #符号很有用,因为它不需要服务器端配置。没有#,url看起来更好,但它也需要服务器端重写。

有关要重置的重写的详细信息:

https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-configure-your-server-to-work-with-html5mode