Primeiro: você tem um erro de sintaxe.
[0-9+] é uma classe de caracteres que pode corresponder a (i) dígitos no intervalo 0 até 9 , ou (ii) um + sinal. Para usar o + como um quantificador (como pretendido), mova o + após o ] , assim:([0-9]+) . Segundo: Você está usando
$2 em seu item que é o nome do produto. Se você quiser usar o ID, você deve usar $1 . Aqui está o que você precisa usar:
RewriteEngine On
RewriteRule ^products/([0-9]+)\-([a-z0-9_\-]+)/?$ products.php?product_id=$1 [NC,L,QSA]
Adicionei os números do produto, traço e sublinhado caso você precise algum dia.
Terceiro: Você deve estar ciente das injeções de SQL , seu script não é seguro. Você pode corrigir isso usando mysql_real_escape_string .