If you want to throw people into screaming fits, quote this bit of WP boilerplate.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /news/index.php [L]
It translates as: "Every time you get any request of any kind whatsoever, detour to check whether it's a request for something that physically exists, and if not, send the user along to the index page." Request for a directory that doesn't exist because it's the product of a rewrite? Index page. Request for an image whose name you inadvertently capitalized in the HTML? Index page. Request for robots.txt with some error in the address? Index page.
At an absolute, rock-bottom minimum, the rule should be expressed as something like
RewriteCond %{REQUEST_URI} !/news/index\.php
RewriteRule \.php /news/index.php [L]
But it's still way too broad. Why does everyone in the world merit your index page? Only rewrite the ones that have requested specific URLs that are actually in use. Otherwise you'll get someone asking for
/paintings/rats/qfhqbqpisvdpxhgo.html
(google tried this on me recently, probably because I'd triggered their "check for soft 404s" routine) and you really do
not want to serve them any kind of content. Other than your custom 404 page.
However, this does not redirect to the new site and does not convert non www to www.
It doesn't redirect to anywhere. The rule is set up as a Rewrite, not a Redirect. Different critters entirely.
If you wanted the index.php rule to be a redirect, you would have to do two things: add the complete protocol and domain,
and append the R=301 flag, like so:
RewriteRule \.php$ http://www.example.com/news/index.php [R=301,L]
Yes, you need the L flag with redirects. Counter-intuitive, but that's the way it is. (Unless, ahem, your name is jdmorgan and you really do mean "Redirect eventually, but we've got some other stuff to take care of first.") If you leave off the R=301 flag it defaults to 302. If you use the flag but leave off the protocol and domain, the server uses whatever it was given-- with or without www., with or without extraneous port number.