Reverse the ordering of your rule and use QSA
flag. QSA
(Query String Append) flag preserves existing query parameters while adding a new one.
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301,NE]
RewriteRule ^(.*)-p(.*)\.html$ product_page.php?id=$2 [L,QSA]