Все части URI переписаны, поэтому он указывает на /index.php/code/home. Хороший способ сделать это - настроить отображение, например. http://code.local, чтобы указать ваш / Users / ~ myusername ~ / Sites / code, тогда все ваши запросы будут решены на корневом уровне, и все будет работать как надо.
РЕДАКТИРОВАТЬ: Downvoters, кажется, невежественны, но не имеет значения ..
Вот что теперь делает ваш код:
GET http://localhost/code/home
// rewritten to:
http://localhost/index.php/code/home
Итак, как я уже говорил, ХОРОШИМ способом было бы сопоставление хоста, чтобы вы получили все на корневом уровне (что ХОРОШО, так как, скорее всего, у вас это будет на производственном сервере ...), и это поможет. без изменений в .htaccess.
В противном случае вы можете использовать совет Франческо с RewriteBase, но немного изменилось:
// Francesco's RewriteRule does this:
http://localhost/code/home
// rewritten to"
http://localhost/code/index.php/code/home
поэтому просто измените RewriteRule на это:
RewriteRule ^code/(.*)$ index.php?/$1 [L]
// rewrites in your case to:
http://localhost/code/index.php/home
// which is what you wanted, aye?