Domínios com e sem www

February 19, 2010

in How to,Webdevelopment

É 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

Não há posts relacionados.

{ 16 comments… read them below or add one }

João Alves February 19, 2010 at 9:24 pm

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.

Reply

João Silas February 20, 2010 at 1:01 am

O record.pt devia ler este post :P

Reply

cenourinha February 20, 2010 at 7:59 am

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

Reply

Alex February 21, 2010 at 9:15 pm

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.

Reply

Pedro Dias February 22, 2010 at 8:34 am

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.

Reply

Nelson Monteiro March 3, 2010 at 12:54 pm

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

Reply

Pablo Almeida February 22, 2010 at 11:11 am

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!

Reply

rivercastell February 22, 2010 at 11:29 am

É 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!

Reply

Lucas Mezêncio February 22, 2010 at 8:49 pm

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’.

=]

Reply

Ricardo Fraga February 23, 2010 at 2:43 pm

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

Reply

Diego Silva March 31, 2010 at 6:07 pm

Posso adicionar 2,3 redirecionamentos 301 no .htaccess?

Reply

Lucas Mezêncio March 31, 2010 at 8:56 pm

Pode sim, cara!
É só colocar cada um numa linha, normal. =]

Reply

Diego Silva April 8, 2010 at 10:50 am

Lucas Mezêncio, Obrigado. =)

Reply

Ludy Amano June 11, 2010 at 4:01 pm

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

Reply

Jorge Vieira July 20, 2010 at 4:37 am

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.

Reply

Fernando Cosentino August 4, 2010 at 3:54 pm

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?

Reply

Leave a Comment

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.

Previous post:

Next post: