我正在使用AngularJS v1.6.5
当我浏览网站的网页时,网址的格式为:
然而,当我键入一个没有hash-bang的地址时,该站点进入无限循环,并在浏览器控制台输出中显示以下消息:
警告:尝试不止一次加载角度。
我的路线提供商看起来像这样
.config(['$routeProvider', '$httpProvider', function ($routeProvider, $httpProvider) {
$routeProvider
.when('/', {
templateUrl: 'partials/home.html',
controller: 'HomeCtrl'
}).
//ALL ELSE
.otherwise({
redirectTo: '/'
});
我有一个拦截器侦听HTTP错误消息但是这似乎没有被调用:
$httpProvider.interceptors.push(['$q', '$location', '$localStorage', function ($q, $location, $localStorage) {
return {
'responseError': function (response) {
if (response.status === 404) {
window.location = "/";
}
return $q.reject(response);
}
};
}]);
答案 0 :(得分:1)
我找到的一个解决方案是使用html5模式删除#!从URL中,路由提供者中的“.otherwise”路由捕获任何其他请求。
$locationProvider.html5Mode(true);
然后在index.html中添加:
<head>
<meta charset="utf-8">
<base href="/">
</head>