Try this htaccess
Code:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
When you say it works on localhost but not on server...and "so there is no chance for this type of error."... That is absolutely not true unless your server has the exact same OS, webserver, modules, php version, php modules, setup, etc as your development server which most likely isn't the case unless you're using a virtual machine or something. Some OS's are case sensitive when it comes to filenames and others aren't.