I've killed the better part of the morning and this afternon trying to
figure out this use of Apache's mod_rewrite.
Welcome to mod_rewrite. There's a logging facility that can create a log of which rules were tried, but it doesn't help in this case where you only have one rule.
RewriteEngine On
RewriteRule ^/?product-([A-Za-z0-9-]+)\.php$ product.php?name=$1
[ R=301,L]
You did a gread job here, but ...
1) No spaces in the [] at the end of the line, so you want [R=301,L]
2) I found I needed to add this option also:
Options +SymLinksIfOwnerMatch
3) You almost certainly also want QSA (query string append), making it [R=301,L,QSA] at the end of the line. This will add the name parameter to whatever other parameters were sent, instead of dropping the original parameters:
product-a.php?quantity=4 -> product.php?name=a&quantity=4
You can check Apache's error_log if this still isn't working for hints.
Harold