Tampoco se mucho de htaccess pero a mi me funciona con esto
Código BASH:
Ver originalRewriteEngine on
RewriteBase /
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Yo lo empleo para redireccionar https .... deberia funcionar para el www tambien
Lo que no se en tu caso .... cual seria la condicion RewriteCond corecta
voy a probar y edito
He probado lo tuyo y funciona en mi caso con esto:
Código BASH:
Ver originalRewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !^http://www.*$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Yo creo que la condicion que intentaste tu no era correcta
!^www. [NC] ---- > !^http://www.*$
RewriteEngine on es para asegurarte que tienes encendido el mod_rewrite de apache
de todos modos esto lo solucionas mejor en el foro de Apache aqui estamos en PHP
hay otros temas parecidas en dicho foro
http://www.forosdelweb.com/f58/redireccion-www-1128613/