Domínios com e sem www

É inacreditável a quantidade de sites de instituições portuguesas importantes que não funcionam quando o domínio não é precedido por www. Embora não seja crucial para o simples funcionamento de um site, este mishap acarreta uma má experiência em termos de usabilidade e acessibilidade, para não falar nos links que perdem cada vez que alguém liga para o site com um link sem www (como por exemplo os meus neste post).

De entre os browsers que testei (Chrome, Firefox, Internet Explorer e Opera) apenas o Firefox redirecciona automaticamente para a versão www quando não consegue resolver o DNS, a maioria dos motores de pesquisa utilizadores, e utilizadores de outros browsers como o Internet Explorer deparar-se-ão com um erro nada amigável.

Erro no IE quando tento aceder a http://bpinet.pt/:

Erro no Chrome para http://mbnet.pt/:

No entanto isto é muito simples de resolver e normalmente significa que dominio.com não foi adicionado como A record e o subdomínio www não foi adicionado como CNAME (Canonical Name record) na configuração do domínio no servidor e talvez tenha sido adicionado como A record erroneamente. A configuração simples de DNS de um dominio no servidor pode parecer-se com o seguinte:

dominio.com. — NS — NS1.DOMINIO.COM.
dominio.com. — NS — NS2.DOMINIO.COM.
dominio.com. — A — 123.456.789.012
ftp.dominio.com. — A — 123.456.789.012
www.dominio.com. — CNAME — dominio.com.

Podem haver mais elementos pelo meio, mas estes são os básicos por defeito, para corrigir o problema basta adicionar o subdomínio www como CNAME (a verde no exemplo) apontando para o A record dominio.com (a vermelho). Após termos corrigido o problema devemos ainda proceder a um passo seguinte, porém não menos importante, que passa por definir apenas uma versão canónica para browsers e motores de busca. Isto evita que o domínio seja indexado com e sem www. evitando por conseguinte problemas de conteúdo duplicado e dispersão do valor dos links recebidos. Para efectuar essa configuração basta fazer o seguinte:

Em servidores Apache, edite ou crie o ficheiro .htaccess e insira as seguintes linhas:

1
2
3
4
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{http_host} ^dominio.com [NC]
RewriteRule ^(.*)$ http://www.dominio.com/$1 [R=301,L]

Para fazer o inverso e redireccionar www. para a versão sem www:

1
2
RewriteCond %{http_host} ^www.dominio.com [NC]
RewriteRule ^(.*)$ http://dominio.com/$1 [R=301,L]

Em PHP:

1
2
3
4
5
6
7
<?php
if (substr($_SERVER['HTTP_HOST'],0,3) != 'www') {
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.'.$_SERVER['HTTP_HOST']
.$_SERVER['REQUEST_URI']);
}
?>

E finalmente em ASP (yuck…):

1
2
3
4
5
6
7
8
<%
If InStr(Request.ServerVariables("SERVER_NAME"),"www") = 0 Then
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www."
& Request.ServerVariables("HTTP_HOST")
& Request.ServerVariables("SCRIPT_NAME")
End if
%>

Agora toca a consertar os sites, vá! Já não há a desculpa que ninguém explicou…

Nota: Para quem faz a gestão do Dominio fora do servidor, exemplo Godaddy.

Outras referências:

  1. Fórum Blogger – Domínio não funciona sem www
  2. Movimento Não ao www

Comments

  1. Já tinha reparado nesta situação (não só em Portugal, mas mais em Portugal) e acho que os sysadmins não tem grande cuidado com os links: tanto seja com o www, os links optimizados para SEO, etc etc ainda há pouca cultura no web develop / sysadmin português.

  2. O record.pt devia ler este post :P

  3. Tenho reparado imensamente nisso, mas também no inverso:
    http://worten.pt/
    http://www.worten.pt/

  4. Não ha nada em lado algum que diga que as duas coisas têm de ter o mesmo resultado. Os utilizadores, ao longo dos anos, é que foram induzidos a tal ideia.
    Eu vi numa publicação informática ha mais de 10 anos atras, onde se lia que as duas coisas, davam exactamente (e erradamente) o mesmo resultado em qualquer caso.
    Ainda recentemente vieram-me pedir explicações, do porquê de um endereço sob minha responsabilidade não estar a “funcionar”. Ora o endereço estava, mas com o www.
    De qualquer forma a forma mais correcta de resolver este problema, considerando que é realmente um problema que deve ser resolvido (eu não considero), é via dos resource records do DNS.

    • Olá Alex,

      Certo, eu também não disse que as duas versões têm de apresentar o mesmo resultado, mas ambas as versões *devem* funcionar. Muita gente ainda não entendeu é que www. é de facto um subdomínio, e pode apresentar um conteúdo diferente do domínio de raíz.

      • Nelson Monteiro says:

        Bom dia,

        Concordo com o seu artigo, agora a solução apresentada (a parte do php e asp) penso não ser a mais correcta. Não dá para resolver este assunto alterando apenas os DNS, fazer com que o não www redireccione para o www. No meu caso como o meu servidor de iis tem mais de 300 sites, essa solução não é viável. Outra solução que encontrei foi a de criar um site a responder pelo não www e depois redireccionar esse site via 320 redirect para a versão www.
        O ideal para este redirect era ser feito tudo exclusivamente através dos DNS. Alguem sabe como se faz?

        obrigado

  5. Achei muito legal sua iniciativa de passar dicas de forma rápida e clara, Pedro. No Brasil há muitos sites com este problema também, inclusive grandes varejos e portais.

    Com certeza este post será uma referência para todos os webmasters que tem este problema nas mãos!

  6. É realmente uma vergonha, para os responsáveis técnicos destes sites, que isto aconteça. O incrível é que acontece imensas vezes e em projectos de renome, como é o caso do BPI.
    Posso dizer que eu em 99% da vezes nunca coloco o www, e como eu, há muitas pessoas que assim o fazem. Se há 10 anos atrás as coisas eram diferentes hoje já mudaram. E, 10 anos em Internet é uma eternidade dinossaurica.

    Perguntas:
    Quantas visitas perdem ao dia estes sites por não terem configurado o domínio sem www ?
    Quanto dinheiro perdem com este pormenor ?
    Quais são os prejuízos à imagem da instituição?

    Façam contas e corrijam o que tem a corrigir!

  7. Faltou do lighttpd!!
    No seu arquivo de configuração (normalmente lighttpd.conf), coloque assim:

    $HTTP["host"] =~ "^(www\.|)nomedosite\.com\.br$"{

    }

    Aí nesse caso, tanto faz com ou sem ‘www’.

    =]

  8. Uma das maiores companhias energéticas do Brasil tem esse problema: http://cemig.com.br/

    Mas, como já foi dito, muitos e muitos grandes sites nacionais possuem o mesmo problema.

    Falha? Ignorância? Descaso? o.O

  9. Diego Silva says:

    Posso adicionar 2,3 redirecionamentos 301 no .htaccess?

  10. Diego Silva says:

    Lucas Mezêncio, Obrigado. =)

  11. Ludy Amano says:

    Também acho importante redirecionar com 301 as páginas com /index.php ou default.asp para a versão principal (com ou sem www).

    Sem o redirecionamento, ao todo serão 4 páginas que exibem exatamente o mesmo conteúdo:

    http://www.meusite.com.br
    http://www.meuste.com.br/index.php
    meusite.com.br
    meusite.com.br/index.php

  12. Boa noite,
    Acabei de alterar o meu .htaccess com a informação disponibilizada para html mas por alguma razão o site continua com entrada duplicada (com e sem www). Esta alteração é imediata, estarei a fazer algo de errado…?

    excelente post já agora! Muito conciso e com bastante informação. Não podia concordar mais que é ridículo que grandes sites não abram sem o www.

  13. Fernando Cosentino says:

    Pedro ou colegas dos comments, alguém tem idéia ou já leu em algum post uma estatística aproximada de usuários que digitam o domínio sem o www?

  14. Olá!
    Eu tenho um site wordpress que está instalado num servidor linux (apache), e ele só funciona com o www, se eu quisesse alterar, como seria?
    Tentei usar plugins e deu pau!
    Tentei alterando lá em Configurações/Geral e alterei o endereço e a url e deu problema, mas consegui reverter.
    Se eu criasse um .htaccess e colocasse na raiz do meu site daria certo?

  15. Olá boa tarde, gostei imenso do seu artigo e achei bastante útil,mas no entanto gostaria de salientar um pormenor interessante alguns dos sites que indicou como os:”http://bpinet.pt/” e o
    “http://mbnet.pt/”, visto serem sites bancários usam uma ligação segura “https”, e posso estar enganado na afirmação que aqui coloco e por isso até gostaria de ouvir a sua opinião sobre a mesma, pois considero que o conhecimento não ocupa lugar.

    Será que o objectivo dos sites “bpinet.pt” e “mbnet.pt”, não será de ter apenas o site disponível para os endereços HTTPS, para que os clientes acedam apenas por esta morada evitando todas os outras moradas “Semelhantes” evitando assim fraudes como o PISHING?, não sei se me espressei da melhor forma o que eu pretendo dizer é ok somos uma instituição bancária e a nossa morada é esta e é única, por isso a todos os nossos clientes que pretendam aceder ao nosso site via outro caminho “nome” poderão estar a ser alvo de uma tentativa de pishing.

    Nota: Adorei o seu blog e já o adicionei aos meus favoritos os meus parabéns.

    Paulo B.

Se o seu comentário ou pergunta é sobre um site ou problema específico, ou mesmo uma pergunta geral sobre a pesquisa do Google, o melhor lugar para obter uma resposta é no Fórum do Google de Ajuda a Webmasters!

Ao comentar, por favor utilize o seu nome ou nick, e não o nome do seu negócio ou empresa. Os nomes de negócios ou empresas quando utilizados em comentários tendem a ter uma conotação de spam, e eu gostaria de encorajar as pessoas a comentarem com o seu nome verdadeiro.
Link para reportar SPAM no Google.

Comentários fecham automaticamente ao fim de 365 dias.