Codeigniter tiene una método para tratar con las URLs: http://dominio/controlador/metodo/param1/param2/… El problema viene cuando nuestra aplicación necesita URLs diferentes, como las de Twitter u otra red social, que son del tipo http://dominio/username.
Para ello primero se debe cambiar el archivo routes.php de la configuración:
//Excluir estos controladores cuando se generan las URLs
$route['(login|oauth|site|search)(.*)'] = '1';
//Las URLs de los usuarios
$route['[a-zA-Z0-9]+/(add|edit)'] = 'users/1';
$route['[a-zA-Z0-9]+'] = 'users/profile';
Después habrá que modificar el .htaccess para usar APP_PATH:
RewriteEngine On
RewriteBase /
RewriteCond %{ENV:REDIRECT_APP_PATH} !^$
RewriteRule ^(.*)$ - [E=APP_PATH:%{ENV:REDIRECT_APP_PATH}]
RewriteCond %{ENV:APP_PATH} ^$
RewriteRule ^(.*)$ - [E=APP_PATH:/$1]
RewriteCond $1 !^(index\.php|img|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]
Y por último modificar el config.php para indicar que debe usar el APP_PATH:
$config['uri_protocol'] = "APP_PATH";
$config['enable_query_strings'] = TRUE;
Codeigniter Vanity URLs
Vía / PHPDeveloper.org