É 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:
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
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 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.
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.