所以这可能是一个愚蠢的错误,但我有一个angularJs应用程序,我有ui-router改变状态。我可以通过ui-sref
和$state.go()
导航到不同的网页,但出于某种原因,如果我直接在浏览器中输入网址,我会收到错误cannot GET ...
。我不知道为什么,但这里是配置代码和状态设置:
App Config:
.config(function ( $urlRouterProvider, $locationProvider) {
$locationProvider.html5Mode(true).hashPrefix('!');
$urlRouterProvider.otherwise('/');
});
Items Page component / controller / state config:
(function(){
'use strict';
angular.module('app')
.component("itemPage",{
templateUrl: 'app/itemPage/itemPage.html',
controller: itemPageCtrl
})
.config(['$stateProvider',function ($stateProvider) {
$stateProvider
.state('item', {
url: '/item',
template: '<item-page></item-page>'
});
}]);
function itemPageCtrl(){
var ctrl = this;
}
})();
重申一下,如果我是我网站的主页并点击了一个按钮,我可以使用ui-sref or $state.go()
访问项目页面,但是如果我尝试将网址直接放在localhost:9000/item
中,或者是我已经在页面上并单击刷新它会给出cannot GET /item
消息。
我们将非常感谢任何帮助,如果需要,我可以提供更多代码。 谢谢。
答案 0 :(得分:0)
您应该在服务器上进行配置,将所有请求重定向到入口点文件(通常是您的index.html
),例如在Apache中使用.htaccess
文件。
这个问题有时已经提出;
Reloading the page gives wrong GET request with AngularJS HTML5 mode
在Apache服务器上配置:htaccess redirect for Angular routes
在节点服务器上配置:Node.js catch-all route with redirect always renders index page with Angular regardless of url