g1smd - 8:08 am on Nov 28, 2011 (gmt 0)
There's only three things right with your initial code.
You have correctly listed redirects before rewrites.
You have correctly used the R=301 flag.
Every rule correctly has the L flag.
There are however, multiple serious problems.
First, the redirect target should include the protocol and domain name to avoid duplicate content issues.
Second, please read everything that has been said here over the last decade about not using the (.*) grouping at the beginning or in the middle of a RegEx pattern and about never using more than one (.*) in a pattern.
Thirdly, unless you want your server hacked by opportunists, that $1.php rewrite target needs a prepended leading slash, like /$1.php...