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.