Ваши правила неоднозначны.'<language>'
шаблон будет соответствовать каждому URL, поэтому второе правило никогда не будет достигнуто.Вы должны либо создать различную структуру URL для этих двух правил:
'rules' => [
'<language>' => 'site/index',
'id/<id>' => 'product/index',
],
, либо использовать разные шаблоны (только литеральные языки и числовые идентификаторы):
'rules' => [
'<language:[a-z]+>' => 'site/index',
'<id:\d+>' => 'product/index',
],