It’s not immediately obvious where to put various “assets” when using CI – I’ve seen some folks place them in the /views/ directory, or use routing, or the assets helper (which seems ungainly for any application big enough to justify the use of a framework in the first place).
Remember that all your files are redirected through the front-controller index.php – that sits in the same root directory as your system and application directories – so I ended up creating an /assets/ directory there, and subdirectories for images, css, js, etc – none of which should be publicly inscrutable.
If you’re using mod_rewrite to remove the index.php component of the URL, you can skip this one directory:
RewriteCond $1 !^(index\.php|assets|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]