Considere uma página, http://example.com
que pode ser exibida publicamente e quando um usuário se autentica. Agora, suponha que você ative o HTTPS para todas as páginas quando um usuário fizer login no seu site, mas apenas quando estiver conectado. Sua página http://example.com
agora se torna https://example.com
para todos os usuários conectados. Se o usuário conectado gostar da sua página e decidir vincular a ela por meio de uma postagem de blog ou site de mídia social, há uma boa chance de que eles usem a versão HTTPS do URL.
De uma perspectiva de SEO, qual é a sua estratégia para evitar problemas de conteúdo duplicado entre os dois URLs?
O que deve acontecer se um usuário chegar ao URL HTTPS, mas não estiver conectado ou não tiver uma conta? Deve haver um redirecionamento para a versão HTTP? Se sim, como você lidaria com isso?
Meu instinto é que, para todas as páginas que podem ser exibidas publicamente e enquanto estiverem logadas, a página deve primeiro detectar se o usuário está logado. Se logada, ela permanece HTTPS ou usa um redirecionamento 302 da versão HTTP para HTTPS. Se o usuário não estiver conectado e chegar à versão HTTPS da URL, ele usará um redirecionamento 301 para a versão HTTP. No entanto, gostaria de receber uma solução mais elegante ou eficaz.
Edit : Eu estava assumindo que, se um usuário estiver logado, todo URL deve ser HTTPS (ou pelo menos isso deve ser uma opção), mas, como fiz uma pesquisa um pouco mais, talvez essa suposição estivesse errada. A maneira como vejo as pessoas implementando é que elas habilitam o HTTPS apenas para páginas que enviam e recebem dados confidenciais: login, checkout do carrinho de compras, gerenciamento de perfis de usuários etc. Estou tentando descobrir qual modelo é o melhor.
Aparentemente, o Google Mail oferece aos usuários a opção de usar ou não HTTPS em todas as páginas através de uma configuração no perfil do usuário. Essa é certamente uma opção, mas eu ainda precisaria abordar o comportamento de páginas publicamente disponíveis para todos os estados de autenticação.
Como estou criando um sistema de gerenciamento de conteúdo que será usado por outras pessoas, preciso garantir que esteja certo. Quais configurações devem estar disponíveis para o proprietário do site? Neste ponto, estou pensando em um controle granular de cada página (esteja ela protegida ou não com SSL) e também de todo o site. No entanto, fornecer esse nível de controle pode ser um erro se as pessoas não entenderem todos os problemas e puderem causar problemas de segurança. Essa talvez seja a primeira questão. Quais são os níveis apropriados de controle e quais são os padrões inteligentes? A segunda é como as páginas devem se comportar para o usuário. De uma perspectiva de SEO, acho que o processo que descrevi acima ou usando orel="canonical"
(como o jmb sugeriu) funcionaria, mas pregar o comportamento da página para que ela seja segura e perfeita também é essencial.