Попробуйте перевести этот фрагмент кода.
RewriteBase /
RewriteRule ^(index\.php|assets|uploads|fav.ico) - [L]
RewriteRule ^(.*)$ index.php/$1 [L]
Ваша проблема в том, что apache сначала выполняет RewriteRule, а не RewriteCond.Ваш код nginx запускается последовательно, поэтому $ 1 еще не установлен, когда вы читаете его.
Я не знаю nginx, но я думаю, что это может быть тем, что вы получите, если перевести вышеприведенное:
rewrite ^/(index\.php|assets|uploads|fav.ico) - last
rewrite ^/(.*)$ /index.php/$1 last;
или еще
rewrite ^/(index\.php|assets|uploads|fav.ico).*$ $0 last
rewrite ^/(.*)$ /index.php/$1 last;