By default the framework routes everything through the index.php file. You can change this default functionality by using mod_rewrite.
Adjust your config.php file in /application/config/config.php
$config['index_page'] = 'index.php';
$config['index_page'] = ' ';
Next create a .htaccess file in the root folder using the following rewrite rules:
RewriteCond $1 !^(index\.php|css|js|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Now instead of having to go to http://example.com/index.php you can just do http://example.com
If you are not using the root directory on your web server you will need to change the last rewrite rule to match your application root directory's path. For example if my app was location at:
I would have to include "app1" in the last rule like so:
RewriteRule ^(.*)$ /app1/index.php/$1 [L]
If the rewrite rule isn't working, ensure you are allowing .htaccess files in your Apache config file. The directory section should contain an AllowOverride All option:
Options Indexes FollowSymLinks
Allow from all
Don't forget that any changes to the Apache config file require a service restart!