That's the redirect for AFTER you have changed the links on the page to point to the new URL. URLs are defined in links. You change a URL by changing the link the user clicks on.
You have the redirect from query string URL to SEF URL in place. Next you need a rewrite to accept SEF requests and rewrite the request to the script to return the content.
Once both are in place you'll find you have an infinite redirect-rewrite loop. Change the RewriteCond in the redirect code to look at THE_REQUEST and not QUERY_STRING. This will ensure you redirect only direct client requests, not previously rewritten pointers.
Use the Live HTTP Headers extension for Firefox to investigate the HTTP transaction between browser and server.
Yea i have all of the links working and they have double indexed. I have rewritten the index page so have the right links there and click. However the damage is already done. Some with the ?p= and some with the .html are in google.
So im trying to avoid all of the duplicate content issues.
I even tried: RewriteBase / RewriteRule ^?p=insurance$ [somesite.org...] [R=301,NC,L]