Это плохо, я включил $config['enable_query_strings'] = TRUE;
в конфиге, поэтому он вызывает проблему. Когда я читал основной файл uri.php, у него был следующий комментарий.
// If query strings are enabled, we don't need to parse any segments.
// However, they don't make sense under CLI.
if (is_cli() OR $this->config->item('enable_query_strings') !== TRUE)
Я установил $config['enable_query_strings'] = FALSE;
тогда все работает нормально.