Javascript 用户界面路由器返回:";无法获取/page";

Javascript 用户界面路由器返回:";无法获取/page";,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我正在使用ui路由器,并且有一个配置文件状态,如下所示: .state('profile', { url: "/profile", templateUrl: "views/profile.html", controller: 'ProfileCtrl', resolve: { currentUser: function(gamAuth){ return gamAuth.checkCurrentUser(config.userRol.us

我正在使用
ui路由器
,并且有一个
配置文件
状态,如下所示:

.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)

我尝试按照决策树中的建议提供绝对URL

我还尝试了一些在线建议,其中最受欢迎的是这些建议(将其放在
app.run()
部分):

在my
index.html
中存在和不存在
标记的情况下,对所有方法进行了测试。 谢谢您的时间。

如果您想使用不带“#”前缀的url,则需要启用true

此外,您还需要在中添加您的modrewrite,如前所述

先决条件:

npm install --save-dev connect-modrewrite

启用HTML5模式后,#字符将不再用于URL中。#符号很有用,因为它不需要服务器端配置。如果没有#,url看起来会更好,但也需要服务器端重写

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


我现在使用的是:
$locationProvider.html5Mode(true)
。是否应该以不同的方式来做?哦!如果您已经在使用此功能,则说明您为站点提供服务的服务器存在问题。请让我知道你是如何为你的项目服务的。我刚刚试过,尽管我(看起来是)
html5Mode(true)
-我输入了
http://localhost:9000/#/profile
,页面正确解析为
/profile
。这是否意味着
html5
应该以不同的方式/在不同的地方启用,而不是使用
$locationProvider
?是的,html5模式就是这样做的。因此,我认为当你重新加载时,会出现显示错误“无法获取”,对吗?你知道如何更改我的
Gruntfile.js
,使其正常工作吗?我的Grunfile文件集的内容与建议的类似,但问题仍然存在。虽然这在理论上可以回答这个问题,但请在此处包含答案的基本部分,并提供链接以供参考。
npm install --save-dev connect-modrewrite