К сожалению(ли?) такие извращения не предусмотрены движком.
Решение простое: props в объекте маршрута может быть функцией, которая принимает route и собственно возвращает props. Потому вы можете ограничиться чем-то вида:
{
props: route => route.path.split('/').reduce((props, keyvalue) => {
if(keyvalue = keyvalue.match(/^(.*?)=(.*)$/)) {
props[keyvalue[1]] = keyvalue[2];
}
return props;
}, {}),
path: '/product/*',
component: Foo
}
Если порядок и вид параметров важен, можно использовать вместо * что-то вроде:
path: '/product/(country=[^/]+/)?(status=[^/]+/)?', // ...
, чисто как ограничение.
Решение адекватное: использовать query, где парам key=value самое место, и не изобретать велосипед.