Javascript AngularJS$routeProvider不';正确的路线

Javascript AngularJS$routeProvider不';正确的路线,javascript,angularjs,html5mode,Javascript,Angularjs,Html5mode,因此,我不熟悉Angular,并试图弄清楚多条路由如何可以指向同一个视图/模板URL和控制器。以下是我写的: angular .module('mwsApp', [ 'ngAnimate', 'ngCookies', 'ngResource', 'ngRoute', 'ngSanitize', 'ngTouch', 'ui.bootstrap' ]) .config(function ($routeProvider, $loca

因此,我不熟悉Angular,并试图弄清楚多条路由如何可以指向同一个视图/模板URL和控制器。以下是我写的:

angular
  .module('mwsApp', [
    'ngAnimate',
    'ngCookies',
    'ngResource',
    'ngRoute',
    'ngSanitize',
    'ngTouch',
    'ui.bootstrap'
  ])
  .config(function ($routeProvider, $locationProvider) {
    // debugger
    $routeProvider
      .when('/', {
        templateUrl: 'index.html',
        controller: 'MainCtrl as vm',
      })
      .when('/rika', {
        templateUrl: 'index.html',
        controller: 'MainCtrl as vm',
      })
      // .otherwise({
      //   redirectTo: '/'
      // });

      $locationProvider.html5Mode(true).hashPrefix("!");
  });
问题:目前,如果我转到“localhost:9000/”它会显示正确的版本,但如果我转到“localhost:9000/rika”,它会显示“无法获取/rika”

调试:我已经将问题缩小到HTML5模式。我正试图摆脱这个#!这个角度会自动添加到URL中,但当我这样做时,错误会弹出

感谢任何人的意见

您无法在
本地开发中摆脱
#
,因此您需要对这一行进行注释

$locationProvider.html5Mode(true).hashPrefix("!");
但是当您在生产中的某个
服务器上时
,然后
取消注释
,并使用它来删除

否则,在本地开发中重新加载
时,您将一直无法获得错误

您无法在
本地开发中摆脱
#
,因此您需要对这一行进行注释

$locationProvider.html5Mode(true).hashPrefix("!");
但是当您在生产中的某个
服务器上时
,然后
取消注释
,并使用它来删除


否则,在本地开发中重新加载
时,您将一直无法获得错误

您无法摆脱地址散列,这会破坏使用Angular(也是AJAX'ing)等进行路由的目的。是的,您可以,我没有亲自处理过它,但它是有可能的。我想您每天都会学到一些新的东西。对于什么好处来说似乎有很多麻烦?你可以使用
$stateProvider
来解决这个问题。你无法摆脱地址散列,它破坏了使用Angular(也是AJAX'ing)等进行路由的目的。是的,你可以,我没有亲自去摆弄它,但它是有可能的。我想一个人每天都能学到一些新东西。对于什么好处来说似乎有很多麻烦?你可以使用
$stateProvider
来解决这个问题。这在生产上仍然不起作用,site.com/rika仍然会导致问题。在html中添加base标记,这样做没有用,你需要在服务器上做一些设置,基于你使用的是什么,比如nginx,s3等这仍然不能在生产环境下工作,site.com/rika仍然会在html中产生问题和基本标记,仅仅这样做是没有帮助的,您需要在服务器上进行一些设置,根据您使用的是什么,如nginx、s3等