As Mark has said the Sitecore URL rewrite module is what is recommended for this:
This module is similar to IIS rewrite rules and supports regex etc, however the re-write rules exist in Sitecore instead of in a web.config / redirects file.
I've used this before to great success as it is pretty flexible so should handle most scenarios. It also gives content editors visibility over what rules are in place which is much better than something hidden away that they can't see.
I also developed a tool for importing a spreadsheet that contained the old an new urls and it auto-created the re-write url items for you. This saves a lot of time and user error when there are lots of urls to re-write. It supported multi-site too.
I will perhaps look to re-work it and make it available on the marketplace/github if this is something that would be useful to others.