I wouldn't do this in a controller action as the request shouldn't really be reaching your MVC app with an incorrect route. It's unnecessary clutter when you can handle this with an IIS rewrite rule, by mapping capture groups:
<rule name="OldNewRule" stopProcessing="true">
<match url="^([a-z]+)/([a-z]+)/([0-9]+)/([a-z0-9]+)$" ignoreCase="true" />
<action type="Redirect" url="http://www.new.com/{R:4}/buyer/{R:3}" redirectType="Permanent" />
<conditions>
<add input="{HTTP_HOST}" pattern="www\.old\.com" />
</conditions>
</rule>
Here, I am assuming that your ID is numeric and your title is alphanumeric. This will grab your capture groups {R:3}
and {R:4}
(which are 'id' and 'mytitle', respectively) and reformat them into the proper string, at the new domain.
Additionally, it requires that the original request was for the old.com
domain, so this won't work if your existing rewrite happens first (you can probably remove the one you have entirely, or rework it to do what this is doing). This prevents it from redirecting any routes that match that were actually directed at the new domain, so you can still have MVC routes of this structure without them breaking (one clear advantage over doing this in a controller action).