0

我将我的 routeProvider 设置为:

routeProvider.when('/', {templateUrl: 'views/index.html', controller: 'IndexCtrl'});
  // $routeProvider.when('/ayat/:surah/:from/:to', {templateUrl: 'views/quran.html', controller: 'AyatCtrl'});
  $routeProvider.when('/:id/:range?', {templateUrl: 'views/quran.html', controller: 'QuranCtrl'});
  $routeProvider.when('/search?', {templateUrl: 'views/search.html', controller: 'SearchCtrl'});
  $routeProvider.when('/about', {templateUrl: 'views/about.html'});
  $routeProvider.when('/contact', {templateUrl: 'views/contact.html'});
  $routeProvider.when('/sorry', {templateUrl: 'views/sorry.html'});
  $routeProvider.otherwise({redirectTo: '/'});
  $locationProvider.html5Mode(true);
})

每当我刷新页面时,我都会收到“未找到”

以前我没有遇到这个问题

$routeProvider.when('/:extension/:id/:range?', {templateUrl: 'views/quran.html', controller: 'QuranCtrl'});
$locationProvider.html5Mode(false);
4

1 回答 1

0

种子项目中的 package.json 文件指定 npm start 只运行 http-server,它是一个节点模块。它似乎没有正确处理 html5mode,因为为了处理它,它需要将所有不针对特定文件的请求重定向到您的 index.html 文件。您可以制作一个非常简单的自定义节点服务器,并且只提供正确的文件,并允许刷新您的浏览器和所有内容。

看看这个简单的例子

将其添加到应用程序的根目录(与应用程序文件夹相同的级别),然后通过将脚本的 start 属性更改为来更改 package.json "start": "node server.js"

确定是否将请求路由到 index.html 的方法就是这个

function isSpecificFile(path){
  var regex = /^\/(bower_components|css|img|js|partials)\/.*/;
  return regex.test(path);
}

如果您有类似 的请求localhost:8000/foo,则需要以 Angular 完成,因此将加载 index.html,并且 Angular 将加载具有“/js/controllers/foo_ctrl.js”形式的请求的特定文件,服务器将“ t 路由到 index.html。

我会为任何生产寻找更强大的解决方案。

于 2014-10-07T21:40:53.060 回答