Angular URL不起作用,但是ui-sref可以

时间:2017-03-25 17:35:21

标签: javascript html angularjs angular-ui-router angular-material

所以这可能是一个愚蠢的错误,但我有一个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消息。

我们将非常感谢任何帮助,如果需要,我可以提供更多代码。 谢谢。

1 个答案:

答案 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