g1smd - 8:53 pm on Jun 1, 2011 (gmt 0)
With 97 000 redirects there are two viable approaches.
If the "mapping" of old URLs to new URLs is "simple", you might be able to do the whole thing with just a small number of rules, one each for "products", "categories", "reviews", etc.
If the "mapping" is "complex" and especially if there are "parts" that appear in the new URL that cannot be extracted from the old URL path and/or parameters, then you will need to internally rewrite requests for old URLs to a script. That script will then look up the new URL in an array or in a database, and then return the redirect headers.
However, is it appropriate to redirect 97 000 requests?
If there is no direct individual new match for each of a bunch of old URLs, many people are tempted to redirect them all to a single new URL. It is not a good idea to funnel a large number of old pages to a single new URL. In this case a "410 Gone" response is more appropriate.
On that note, I recently made some changes to return "410 Gone" for several thousand pages on a site, rather than redirect elsewhere. I'll be interested to see how quick Google gets to grips with that these days. Google's reaction to 3xx and 4xx codes isn't what it used to be.