Define all the controllers in routes config addressing to their own methods. At the end of routes config add following rule --
$route['(:any)'] = 'articles/view/$1';
All the requests other than previously defined route will now be served by artcile/view
controller method.
Next part is create a mapping table that will map article titles to article ids. You can get article title with
$this->uri->segment(1);
in view
function.
Whenever article is updated with title, then update mapping table as well.