Javascript Angular-$locationProvider.html5Mode(true)阻止routeProvider的其他方法
我有一个问题,只要我广告$locationProvider.html5Mode(true);对于我的应用程序,它不再遵循routeProvider中定义的其他方法。它不返回404页面,而是简单地显示如下错误页面: 无法获取/myErrorURL app.jsJavascript Angular-$locationProvider.html5Mode(true)阻止routeProvider的其他方法,javascript,angularjs,Javascript,Angularjs,我有一个问题,只要我广告$locationProvider.html5Mode(true);对于我的应用程序,它不再遵循routeProvider中定义的其他方法。它不返回404页面,而是简单地显示如下错误页面: 无法获取/myErrorURL app.js angular .module('myApp', [ 'ngAnimate', 'ngCookies', 'ngResource', 'ngRoute', 'ngSanitize', 'n
angular
.module('myApp', [
'ngAnimate',
'ngCookies',
'ngResource',
'ngRoute',
'ngSanitize',
'ngTouch'
])
.config(function ($routeProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl',
controllerAs: 'main'
})
.when('/about', {
templateUrl: 'views/about.html',
controller: 'AboutCtrl',
controllerAs: 'about'
})
.when('/projects', {
templateUrl: 'views/projects.html',
controller: 'ProjectsCtrl',
controllerAs: 'projects'
})
.when('/contact', {
templateUrl: 'views/contact.html',
controller: 'ContactCtrl',
controllerAs: 'contact'
})
.otherwise({
redirectTo: '404.html'
});
// use the HTML5 History API
$locationProvider.html5Mode(true);
});
我使用Yeoman angular模板构建了我的应用程序,除了我设置的量角器测试之外,现在几乎所有的东西都是现成的。我想,消息
无法获取/myErrorURL
是服务器问题
Angular$location html5模式只解决客户端设置-url不包含#,位置控件也包含url中的路径部分
Html5模式需要服务器端配置。每个请求都必须返回应用程序入口点——通常是index.html。您的服务器按路由路径搜索文件,而不是返回索引-这就是您看到错误的原因 这是grunt服务器的问题(谢谢@milanlempera)。对于任何想要解决这个问题的人,我在Kryx对他自己问题的回答中找到了答案 如果其他人偶然发现了这一点,这里是解决方法: (添加的唯一一行是modRewrite行) 确保在grunt文件的顶部声明了以下内容:
var modRewrite = require('connect-modrewrite');
我唯一能做的补充是,您需要通过npm安装modrewrite,如下所示:
npm install connect-modrewrite --save-dev
您是否设置了有效的
?当使用$locationProvider.html5Mode(true)时,这是必需的代码>是的,我做了。请看我下面的答案拉斐尔。谢谢,你说得对。这实际上和我的dist版本一样工作正常,我只需要在grunt服务器上添加一行代码。
npm install connect-modrewrite --save-dev