Se você quer redirecionar todas as solicitações de URL em seu site digitadas sem www para a versão www, tudo que você precisa fazer é adicionar o seguinte código ao seu arquivo htaccess:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Explicando o código:
A primeira linha define uma condição: somente se a condição for verdadeira, a segunda linha será processado. Nossa condição pode ser “traduzido” para: “se o nome do host não começar com www.”…
Os caracteres da expressão regular !^www\. significam:
! = não
^ = inicio da expressão
\. = . (A barra invertida é o caractere de escape, os pontos têm um significado especial nas expressões regulares por isso devemos usar a barra invertida para que possam ser ignorados).
Resumindo !^www\. significa “se não começa com www.”.
A segunda linha é a nossa regra de reescrita que vai analisar e reescrever a URL:
^(.*)$
(.*) significa zero ou mais caracteres (o ponto significa qualquer caractere, o asterisco significa zero ou mais), o “$” indica o fim da regra.
Em seguida, vem a parte que diz como reescrever a url:
http://www.%{HTTP_HOST}/$1 [R=301,L]
O código %{HTTP_HOST} será substituído pelo nome do seu host, o 1$ é uma variavel que pegará o resto do endereço após o “/” da expressão.
Finalmente [R = 301, L] serve para informa que este é um redirecionamento permanente (código HTTP 301), e para que não se processem mais regras de reescrita (se houver alguma após esta).