A nomenclatura www é algo a que todos nos habituámos. Porém, www não é mais que um subdomínio. E sites podem funcionar com ou sem www.
Um hostname é uma configuração de servidor que pode funcionar de forma independente. Assim, por exemplo, os hostnames pedrodias.net
; www.pedrodias.net
e en.pedrodias.net
podem apontar para VirtualHost diferentes, ou mesmo servidores diferentes. No entanto, no caso do meu site, tanto {www}
como {en}
são subdomínios do domínio principal pedrodias.net
. Tecnicamente, eu consigo servir conteúdo diferente em cada uma das três versões.
Como eu só sirvo conteúdo sob {www} e {en}, a versão “naked” (sem www) redirecciona para a versão com www, usando um estado HTTP 301. Ou, em linguagem comum, um redirecionamento permanente. Se não existisse esse mapeamento, ou configurado o DNS do domínio de forma errada, eu poderia não ter designado como a versão “naked” funciona. Isso provavelmente levaria o meu site a não funcionar na versão sem www. Ou mesmo apresentar um erro.
A importância de configurar o naked domain
É inacreditável, a quantidade de sites de importantes instituições portuguesas que não funcionam, quando o domínio não é precedido por www. Embora não seja crucial para o funcionamento de um site, isso é algo acarreta uma má experiência em termos de usabilidade e acessibilidade web. Para não falar nos links que perdem cada vez que alguém referencia o site com um link sem www.
De entre os navegadores Chrome, Firefox, Internet Explorer e Opera, apenas o Firefox redireciona automaticamente para a versão www quando não consegue resolver o DNS. Porém, isso acontece porque esse comportamento é parte da funcionalidade do navegador. A maioria dos motores de pesquisa, e utilizadores de outros navegadores como o Internet Explorer, irão deparar-se com um erro pouco amigável.
Exemplo de erro no IE quando tento aceder a http://bpinet.pt/:
Exemplo de erro no Chrome para http://mbnet.pt/:
No entanto, este problema é muito simples de resolver.
Configuração DNS do domínio
Como mencionei acima, isso significa que, nas configurações de DNS, dominio.com não foi adicionado como um A record, e o subdomínio www não foi adicionado como CNAME (Canonical Name record).
A configuração simples de DNS de um domínio 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 existir mais elementos pelo meio, mas estes são os básicos por padrão. 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).
Configuração no servidor
Após termos corrigido o problema, devemos ainda proceder a um passo seguinte, porém não menos importante. É recomendado definir apenas uma versão canónica para usuários e motores de busca. Isto evita que o domínio seja indexado com e sem www, evitando por consequência, problemas de conteúdo duplicado e dispersão do valor dos links recebidos.
Em servidores Apache, edite ou crie o arquivo .htaccess e insira as seguintes linhas:
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:
RewriteCond %{http_host} ^www.dominio.com [NC] RewriteRule ^(.*)$ http://dominio.com/$1 [R=301,L]
Em PHP:
<?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:
<% 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 %>
Se precisar, aqui ficam outras referências úteis:
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.
O record.pt devia ler este post :P
Tenho reparado imensamente nisso, mas também no inverso:
http://worten.pt/
http://www.worten.pt/
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 especifiquei que as duas versões têm de apresentar o mesmo resultado. Porém, 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 raiz.
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
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!
É 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!
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’.
=]
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
Posso adicionar 2,3 redirecionamentos 301 no .htaccess?
Pode sim, cara!
É só colocar cada um numa linha, normal. =]
Lucas Mezêncio, Obrigado. =)
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
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.
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?
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?
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.