【发布时间】:2014-09-29 23:56:54
【问题描述】:
我有一个单页应用程序,我根据 url 地址路由到不同的页面,当用户在 url 中输入不存在的页面时,我想重定向到主页,所以我使用 else 语句,但是它会导致 404 错误,在这里是我的路由配置。:
myApp.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
$routeProvider.
when('/', {
redirectTo: '/products'
}).
when('/products/:id?', {
templateUrl: 'partials/products.html',
controller: 'ProductsController'
}).
when('/orders/:id?', {
templateUrl: 'partials/orders.html',
controller: 'OrdersController'
}).
when('/auto', {
templateUrl: 'partials/AutoComplete.html',
controller: 'TypeaheadCtrl'
}).
otherwise({ redirectTo: '/' });
$locationProvider.html5Mode(true);
}]);
编辑:
按照下面的建议进行了更改,但效果相同,当我键入不存在的页面时,它会转到错误 404 而不是 /products
myApp.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
$routeProvider.
when('/', {
redirectTo: '/products'
}).
when('/products', {
templateUrl: 'partials/products.html',
controller: 'ProductsController'
}).
when('/products/:id?', {
templateUrl: 'partials/products.html',
controller: 'ProductsController'
}).
when('/orders/:id?', {
templateUrl: 'partials/orders.html',
controller: 'OrdersController'
}).
when('/auto', {
templateUrl: 'partials/AutoComplete.html',
controller: 'TypeaheadCtrl'
}).
otherwise({ redirectTo: function () { return '/' } });
$locationProvider.html5Mode(true);
}]);
【问题讨论】:
-
你有/products吗?
-
尝试删除redirectTo: '/products'
-
是的,我有 /products,它工作得很好,但是当我输入不存在的页面时,当我遇到问题时,它会返回 404 而不是重定向到 /products
标签: angularjs routing routes http-status-code-404 route-provider