У вас в урле get запрос
а он в свою очередь не является частью урла
мало того вы не исключаете слеш из первой регулярки а следовательно она удовлетворяет любому значению включая категория с любым написанием.
В вашем случае нужно делать что -то вот такое
1. отделить гет запросы отдельно, так будет правильней
2. исклчите слеш в диапазоне
RewriteCond %{QUERY_STRING} (^|&)city\=\$1($|&)
RewriteCond %{QUERY_STRING} (^|&)id\=\$2($|&)
RewriteRule ^gorod/([^/].+)/category/([^/].+)/view\-product\.php$ /? [R=404]