Проблема в том ... как он узнает, когда остановиться?
сегмент {* независимо} будет совпадать:
/foo/
/foo/bar
/foo/bar/details/4/moreFoo
/foo/bar/andmore/details/4/moreFoo
Поскольку параметр catch-all включает в себя все, он никогда не остановится.
Единственный способ реализовать это - создать отдельный маршрут для каждого места, где вы используете детали ...
например:
games/details/{id}/{itemName}
widgets/details/{id}/{itemName}
books/details/{id}/{itemName}
Конечно, это уже предусмотрено в маршруте по умолчанию {controller} / {action} / {id}