Now 301 redirects are the best way to do this according to my understandings.
This is correct, but you need to distinguish between "what to do" and "how to do it". A 301 redirect is the desired end result. You can get there in a variety of ways including:
Redirect(Match) 301 etcetera (mod_alias in htaccess or config file) RewriteRule blahblah [R=301,L] (mod_rewrite in htaccess or config file) php page that sends out a 301 response header combined with new URL
If the redirect involves a query string, you can't use mod_alias (Redirect or RedirectMatch by that name). This, in turn, means that if you have any existing rules using mod_alias, those rules also need to be translated to mod_rewrite form.
If you search this Forum you will find lots of posts about how to change or remove the query from a redirect target. But before you go there, we need to know where the query is coming from. mod_alias didn't simply invent it; it had to be there already.