O pesadelo 301 'www'. Como eu mudo de volta?

4

Cerca de seis meses atrás, decidi que seria melhor colocar meu website no domínio livre, digamos apenas 'example.com'. Fiz o que todos os sites de instruções me disseram ao adicionar um redirecionamento 301 de www.example.com para example.com.

Desejo agora adotar o domínio nu e criar meu website em www.example.com. Depois de ler várias perguntas tanto neste site quanto em sites como o yes-www.org, percebi que estarei melhor a longo prazo usando o 'www.' para o meu site principal. Isso é especialmente verdadeiro agora, pois o website está crescendo e deve ser dividido em sites separados (por exemplo, news.example.com, research.example.com, community.example.com, etc.). Com a nova estrutura de domínio, o conteúdo principal deve estar listado em www.example.com.

O problema é que remover o antigo redirecionamento 301 de www.example.com para example.com e adicionar um de example.com a www.example.com resultará em um loop infinito de redirecionamentos para aqueles que ainda têm o site em seu cache!

Infelizmente, este é um site grande, com dezenas de milhares de espectadores por dia e não pode ser desfeito de forma automatizada .

A única coisa que posso pensar em fazer é configurar meu website principal em um domínio, "www1.example.com", fazendo um redirecionamento de example.com para www1.example.com e, de alguma forma, com o tempo, migrar de volta para www.example.com? Como eu poderia fazer isso, embora os redirecionamentos pareçam realmente permanentes ?

Em resumo, desejo encontrar uma maneira automatizada de voltar a usar www.example.com em vez do domínio simples, example.com, e realmente não sei como isso será possível novamente.

    
por Anthony 22.11.2012 / 21:22

3 respostas

7

Aviso: Eu sou o autor do link e estou feliz que você tenha gostado.

Você identificou corretamente um problema sério aqui, o do cliente e possivelmente até o cache de proxy da resposta 301. (Felizmente, os mecanismos de busca receberão qualquer alteração rapidamente, então não há muito com o que se preocupar.)

No armazenamento em cache, RFC 2616 tem isto a dizer :

A response received with a status code of 200, 203, 206, 300, 301 or 410 MAY be stored by a cache and used in reply to a subsequent request, subject to the expiration mechanism, unless a cache-control directive prohibits caching.

Curiosamente, os navegadores variam quanto ao cache de 301 respostas . Independentemente do que você fizer, você quase certamente terá alguns usuários que precisarão limpar o cache do navegador.

Com tudo isso em mente, é assim que eu abordaria o problema:

  • Em nenhum momento eu usaria um terceiro subdomínio, como recomendaram meus colegas aqui. Não vejo nenhum motivo para ser necessário, e um subconjunto de seus usuários certamente notará e se perguntará se algo está errado.
  • Primeiro, altero os redirecionamentos 301 existentes de www para não-www para redirecionamento 302. 302 não pode ser armazenado em cache por padrão . Isso eu deixaria no lugar por um período de tempo, talvez 30 dias, para permitir que os mecanismos de pesquisa e a maioria de seus visitantes regulares o vissem.
  • Ao final desse período, eu mudaria o site para usar www, removeria o redirecionamento 302 e colocaria um redirecionamento 301 de não-www para www.

Embora provavelmente sempre exista um ou dois usuários que precisarão limpar o cache para recuperar o acesso ao site, independentemente do método usado, o número deve ser mínimo, pois os caches dos usuários não são infinitos e mesmo que eles não visitem o seu site nesse ínterim, eles quase certamente visitarão muitos outros sites, o que provavelmente empurrará o seu antigo 301 para fora do cache devido à sua idade e falta de uso.

    
por 23.11.2012 / 01:37
3

Sua melhor aposta é ter algum tipo de lógica do lado do servidor, portanto, quando a solicitação chegar em example.com , verifique o referenciador. Se o referenciador for www.example.com , não faça o redirecionamento direto de volta para www.example.com , envie-os para outro local ou apenas exiba o site para eles, envie-os para uma subpasta em www.example.com ou o que for.

Além disso, se você registrar essas solicitações, poderá obter boas estatísticas sobre quantos usuários estão vindo do seu www e ainda recebendo um redirecionamento. Eventualmente, esse número deve diminuir bastante.

Além disso, lembre-se de adicionar seus cabeçalhos de expiração a esses 301s - então você não terá o problema descrito no bug do FireFox ao qual você se vinculou.

    
por 22.11.2012 / 22:00
1

Altere o redirecionamento de www.example.com -> example.com para www.example.com -> temp.example.com e, claro, verifique se o endereço temp funciona como um alias para o site.

Ter que correr por algumas semanas ou meses. (E não se esqueça de expirar cabeçalhos naquele 301!) Dê tempo suficiente até você achar que os navegadores da maioria das pessoas aprenderam o novo redirecionamento para temp.example.com e esqueceram o antigo que vai para example.com .

Nesse momento, você pode redirecionar example.com -> www.example.com , sem criar um loop. (Exceto para aqueles poucos que ainda têm um cache do antigo redirecionamento: muito ruim).

Ao mesmo tempo, desative o redirecionamento para temp , mas mantenha esse alias funcionando por mais algum tempo. Quando você perceber que há poucos ou nenhum acesso a temp , poderá encerrar temp .

    
por 23.11.2012 / 00:03