Hi Jason,
As your "Product" function is really designed to perform the work of a "virtual" page, eg Consultation.
Wait until the embed point _SendFile (so any other NetTalk pages are dealt with first). If the page requested doesn't match one of your built in page names, its now the right time to check if a virtual page (one your customer has made up) has been requested.
At this time, check your database (don't bother checking if the page is .jpg, .png, .js, .css otherwise it will unnecessarily slow your system down) to see if the page requested matches one defined by your customers.
If it does, you call product and have it do the work.
Your URL will be what the human typed/followed, so it will already be correct and doesn't need fixing.
Just make sure your builtin names don't clash with arbitrary names your customers are allowed to invent.
Regards
Bill