По идее это должно было быть вот так
RewriteCond %{QUERY_STRING} (?:^|&)route\=product/product(?:$|&)
RewriteCond %{QUERY_STRING} (?:^|&)path\=([0-9]+)(?:$|&)
RewriteCond %{QUERY_STRING} (?:^|&)product_id\=([0-9]+)/specification(?:$|&)
RewriteRule ^index\.php$ /index.php?route=product/product&path=%1&product_id=%2 [L,R=301]
Где %1 и %2 это аналог $1 и $2 из RewriteRule
но проблема в том что у тебя два запроса и тут придется делать это как-то по другому поскольку сработает толкьо $1 и будет он 894 поскольку группы из предидущего конда будут стерты.
так что думаю это можно сделать или через %{THE_REQUEST}
где можно выделить сразу оба параметра
Ну или просто в 404.php поставить регулярку.
Так будет даже наверное лучше, только чтоб 404 отдало после регулярки а не до .
тут я более детально описывал как это сделать.
но товарищ говорит что у него не заработало, хотя у меня на тесте все работало, почитай там в коментах я давал более правильный ответ.
https://qna.habr.com/q/1041262#answer_2012466
если не получится, то пиши придётся создавать тестовой стенд ;)