Это конец конфигурации CI-маршрутов, может быть, вам может помочь:
//more than 2 chars on start uri segment
$route['^(\w{3,})\/?(:any)'] = '$1/$2';
//2 chars lang + /uri_segment
$route['^(\w{2})\/?(:any)'] = '$2';
//only 2 chars
$route['^(\w{2})$'] = $route['default_controller'];
Существует много версий CI, в моем случае CI 2.x, работающих с HMVC, контроллерами MX и т. Д. И т. Д.
CI 3 имеет некоторый способ работы с регулярными выражениями: https://www.codeigniter.com/user_guide/general/routing.html?highlight=routes#regular-expressions
Возможно, может работать что-то подобное, не проверено:
//more than 2 chars on start uri segment
$route['^([a-zA-Z]{3,})/(:any)'] = '$1/$2';
//2 chars lang + /uri_segment
$route['^([a-zA-Z]{2})/(:any)'] = '$2';
//only 2 chars
$route['^([a-zA-Z]{2})'] = $route['default_controller'];