Вам даже не нужно упоминать / trac / в вашем .htaccess. Это ТОЧНО точка
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Вы устанавливаете два «условия перезаписи». Первый говорит: «Пока запрос не файл». Второй говорит: «ИЛИ Пока запрос не является каталогом».
Тогда
RewriteRule ^(.*)$ index.php?/$1 [L]
Отправляет все остальное в index.php, где CI вступает во владение. И просто для записи, мой полный .htaccess, который я использую в каждом проекте:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
Если вы не уверены в строке RewriteCond %{REQUEST_URL} ^system.*
, она существует только для того, чтобы любые запросы браузера к / system / папке всегда направлялись в index.php и поэтому игнорировались.