我有一个单页面应用程序,我根据url地址路由到不同的页面,我想在用户在url中输入非现有页面时重定向到主页,所以我使用其他语句,但是它会导致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);
}]);
答案 0 :(得分:0)
你不需要when('/'...
和其他因为他们基本上做同样的事情。
否则就是获得任何不匹配的东西,所以你不需要路由' /'具体
$routeProvider.
when('/products/:id?', ...).
when('/orders/:id?', ...).
when('/auto', ...).
otherwise({
redirectTo: '/products'
});
编辑问题是重定向到' / products'不匹配' / products /:id'。您需要添加另一条路线,如下所示:
when('/products', {
templateUrl: 'partials/products.html',
controller: 'ProductsController'
})