Why do WordPress rewriites seem to work differently for posts vs pages?

It’s a pretty simple solution – WP_Query utilizes the name variable for posts and custom post type posts. It utilizes pagename for pages, hence why ?name=product1-faqs is not working. Use this instead:

add_rewrite_rule('product1/faqs/?', 'index.php?pagename=product1-faqs', 'top');