当我正确使用html5mode时,$routeProvider
出现问题。
当我访问/profile/: child
时,它会很好,但是当页面刷新时,那么在页面上将是错误。我的代码下面有什么问题:
app.config(function ($routeProvider, $locationProvider) {
var pathViews = function (file) {
return 'http://localhost/mycompany/app/views/' + file;
};
var pathError = function (file) {
return 'app/views/error/' + file;
};
$locationProvider.html5Mode(true);
$routeProvider
.when('/', {
templateUrl: pathViews('dashboard.html'),
controller :'MainCtrl'
})
.when('/home', {
templateUrl: pathViews('dashboard.html'),
controller :'MainCtrl'
})
.when('/profile/:child', {
templateUrl: function($routeParams) {
return pathViews($routeParams.child+'.html')},
controller:'MainCtrl'
})
.when('/404', {
templateUrl: pathError('404.html'),
controller :'MainCtrl'
})
.when('/form-standard', {
templateUrl: pathViews('form-standard.html'),
controller :'MainCtrl'
})
.otherwise({redirectTo: '/404'});});
并且index.html是:
<div ng-view ></div>
答案 0 :(得分:1)
这是正常的,因为当您刷新页面时,您的Web服务器会尝试加载服务器上不存在的请求资源,而是在客户端处理。
例如,如果您部署&#34; routeProvided&#34;在Apache上使用angularjs应用程序,您应该编辑.htaccess
(source):
RewriteEngine on
# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# Rewrite everything else to index.html to allow html5 state links
RewriteRule ^ index.html [L]
简单来说,您必须告诉您的Web服务器将每个请求重定向到主模块入口点。