[eluser]CroNiX[/eluser]
Route processing starts with your first route and see if it can match the url. If it can, it will route there, if not it will go to the next rule.
So, if your (:any)/(:any) rule comes first, it will actually match all routes and route to that controller, because the first (:any) will match, well, everything. That route should be dead last. You want to see if your other routes match first before sending it to a "catch-all" route.
The 2nd thing having to do with this is that if you have very similar routes where the main thing that differs is the number of segments, the route with the MOST segments needs to come before those with less.
Code:
$route['About-Us/Team/(:any)'] = "aboutus/team/$1";
$route['About-Us/Team/(:any)/(:any)'] = "aboutus/team/$1/$2";
Your 2nd route here will never be triggered, because the first one will catch anything that the 2nd one should have received because again, the (:any) rule in the first rule will catch "anything", and that includes extra segments (because at this point the entire url is a string, not a CI "segment"). So the rule with 4 segments should come before the similar one with 3 so that if a request has 4 segments it will be triggered by that rule before trying to match the next one down the list.