Ваш контроллер "any" не вызывается, потому что он попадает в это регулярное выражение, поэтому он перенаправляется на main.
Чтобы исключить «любое» из этого правила, вам необходимо создать для него специальное правило, помня, что для CI правила каскадные , поэтому они выполняются в порядке их представления
Примечание. Маршруты будут выполняться в порядке
они определены. Высшие маршруты будут
всегда иметь приоритет над более низким
из них.
Итак, вы бы получили:
// reserved routes must come before custom routes
$route['default_controller'] = "home";
$route['404_override'] = '';
$route['any'] = //your rule here. maybe "any". ?
$route['(.*)'] = "main/$1"; // CI also provides you with `(:any)` rule, that mateches any character.
Подробнее об этом здесь: Uri маршрутизация