问题
I haven't been able to find a straightforward answer to this, which leads me to believe that it's something really really simple. Either way, here I go.
All of the calls in my $routeProvider work great, but are case sensitive. Here's a code sample:
config(function ($routeProvider) {
$routeProvider.
when('/', { controller: 'TmpCtrl', templateUrl: '/app/home.html' }).
when('/foo', { controller: 'TmpCtrl', templateUrl: '/app/foo.html' }).
otherwise({ redirectTo: '/' });
});
What do I need to add so that '/Foo', '/fOO', '/FoO', etc, all redirect to the same path?
回答1:
There is an option you can pass to $routeProvider to toggle case sensitivity:
config(function ($routeProvider) {
$routeProvider.
when('/', { controller: 'TmpCtrl', templateUrl: '/app/home.html' }).
when('/foo', { controller: 'TmpCtrl', templateUrl: '/app/foo.html', caseInsensitiveMatch: true }).
otherwise({ redirectTo: '/' });
});
回答2:
The routes that are configured using the config function are case sensitive by default. Consider the route below. Notice the route (/home) is lower case.
$routeProvider
.when("/home", {
templateUrl: "Templates/home.html",
controller: "homeController",
controllerAs: "homeCtrl",
})
If we type the following URL in the browser, we will see home.html as expected. http://localhost:51983/home
If you type the following URL, then you will see a blank layout page. This is because by default routes are case-sensitive http://localhost:51983/HOME
To make the route case-insensitive set caseInsensitiveMatch property to true as shown below.
$routeProvider
.when("/home", {
templateUrl: "Templates/home.html",
controller: "homeController",
controllerAs: "homeCtrl",
caseInsensitiveMatch: true
})
To make all routes case-insensitive set caseInsensitiveMatch property on $routeProvider as shown below.
$routeProvider.caseInsensitiveMatch = true;
来源:https://stackoverflow.com/questions/17824687/angularjs-routing-case-sensitivity