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()
部分):
在myindex.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