I have a similar route that should load a different view and controller based on whether or not the parameter is a number. Example:
/artists/2 sho
I use a nasty hack, that consist on change the regexp
var $route = $routeProvider.$get[$routeProvider.$get.length-1]({$on:function(){}});
$routeProvider.when("/artists/:page", {
templateUrl: "/www/artists/index.html",
controller: "ArtistsIndexController"
});
$routeProvider.when("/artists/:name", {
templateUrl: "/www/artists/profile.html",
controller: "ArtistsProfileController"
});
$route.routes['/artist/:page'].regexp = /^\/(?:artist\/(\d+))$/
$route.routes['/artist/:page/'].regexp = /^\/(?:artist\/(\d+))\/$/
It's ugly but it works fine. You can change your routes' regexps to make them match whatever you want.