CodeIgniter で Web アプリケーションを作成すると、そのアクセス URL はデフォルトで下記のような感じになります。
http://example.com/index.php/foo/bar
この URL の index.php という部分を省略し、
http://example.com/controller/action
という URL でアクセスできるようにするためには、Apache の URL Rewriting Engine (mod_rewrite) モジュールの機能を利用します。
.htaccess ファイルに以下のように作成して、Apache を再起動すれば OK です。
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
http://example.com/hoge/controller/action という感じで、1階層深いアドレスでアクセスするのであれば、RewriteRule の /index.php/$1 という部分も合わせて /hoge/index.php/$1 にする必要があります。
つまり、ここには DocumentRoot からの絶対パスを指定します。
さらに、URL ヘルパーの anchor() メソッドが生成する URL から、index.php を除くために、config.php を以下のように修正します。
$config['index_page'] = 'index.php';
↓
$config['index_page'] = '';