It turns out the Redirect directive in an .htaccess file won't match against the query string, only the request uri (the part before the question mark). To match against the query string you'll need to use the RewriteCond and RewriteRule directives. More info on this here: https://simonecarletti.com/blog/2009/01/apache-query-string-redirects/
This should work in the .htaccess
RewriteEngine On
RewriteCond %{QUERY_STRING} ^main_page=product_info&products_id=331$
RewriteRule ^index\.php$ http://gearx.local/catalogsearch/result?q=sku-331 [R=301,L]
If all the urls you need to redirect are in the same format with a numeric id then these two lines should take care of them all:
Best Answer
There are a few ways:
core_url_rewrite
table