O cliente deve se comportar de maneira diferente? Quão?
O cliente deve se comportar de maneira diferente? Quão?
Respostas:
Status 301 significa que o recurso (página) é movido permanentemente para um novo local. O cliente / navegador não deve tentar solicitar o local original, mas usar o novo local a partir de agora.
O status 302 significa que o recurso está localizado temporariamente em outro lugar, e o cliente / navegador deve continuar solicitando o URL original.
Quando um mecanismo de pesquisa spider encontra o código de status 301 no cabeçalho de resposta de uma página da web, entende que essa página não existe mais, procura pelo cabeçalho do local em resposta, escolhe o novo URL e substitui o URL indexado pelo novo e também transfere o pagerank .
Portanto, o mecanismo de pesquisa atualiza todo o URL indexado que não existe mais (301 encontrado) com o novo URL, isso reterá o tráfego da sua página da Web antiga, pagerank e desviará para a nova (você não perderá o tráfego da página da Web antiga).
Navegador: se um navegador encontrar o código de status 301, ele fará o cache do mapeamento da URL antiga com a nova URL, o cliente / navegador não tentará solicitar o local original, mas usará o novo local a partir de agora, a menos que o cache seja limpo.
Quando um mecanismo de busca encontra o status 302 de uma página da web, ele será redirecionado apenas temporariamente para o novo local e rastreará as duas páginas. O URL da página antiga ainda existe no banco de dados do mecanismo de pesquisa e sempre tenta solicitar o local antigo e rastreá-lo. O cliente / navegador ainda tentará solicitar o local original.
Leia mais sobre como implementá-lo no asp.net c # e qual é o impacto nos mecanismos de pesquisa - http://www.dotnetbull.com/2013/08/301-permanent-vs-302-temporary-status-code-aspnet -csharp-Implementation.html
Principalmente 301 vs 302 é importante para a indexação nos mecanismos de pesquisa, pois seus rastreadores levam isso em consideração e transferem o PageRank ao usar o 301.
Veja a resposta de Peter Lee para mais detalhes.
301 é que o recurso solicitado recebeu um novo URI permanente e qualquer referência futura a esse recurso deve ser feita usando um dos URIs retornados.
302 é que o recurso solicitado reside temporariamente em um URI diferente.
Como o redirecionamento pode ser alterado ocasionalmente, o cliente deve continuar usando o URI de solicitação para solicitações futuras.
Essa resposta só pode ser alterada se indicada por um campo de cabeçalho Cache-Control ou Expires.
<?php header("location: http://example.com/new.php"); ?>
e o arquivo new.php - <?php echo 'I am new'; ?>
e acesse o link . Irá redirecionar e exibir o texto "Eu sou novo". Em seguida, substitua o código em old.php para <?php echo 'I am old'; ?>
e também vá para o link . Você verá o texto "Estou velho". Se você executou o redirecionamento 301 no old.php, teria visto o texto "Sou novo" mesmo após as alterações no código do old.php.
webcomic.com/latest
e redireciona para webcomic.com/some-comic-title
com um 301, o navegador sempre redireciona para "some-comic-title". Mesmo quando a próxima história em quadrinhos foi publicada e o "mais recente" agora é redirecionado para "outro título em quadrinhos" ... É aqui que um 302 seria melhor.
Os redirecionamentos 301 são armazenados em cache indefinidamente (pelo menos por alguns navegadores).
Isso significa que, se você configurar uma 301, visite essa página, além de ser redirecionado, mas esse redirecionamento será armazenado em cache.
Quando você visita essa página novamente, seu navegador * nem se preocupa em solicitar esse URL, mas apenas acessa o destino de redirecionamento em cache.
A única maneira de desfazer um 301 para um visitante com esse redirecionamento no cache é redirecionando novamente para o URL original **. Nesse caso, o navegador notará o loop e finalmente solicitará o URL inserido.
Obviamente, isso não é uma opção se você decidiu entrar no facebook ou em qualquer outro recurso que não esteja totalmente sob controle.
Infelizmente, muitos provedores de hospedagem oferecem um recurso em sua interface administrativa chamado simplesmente "Redirecionamento", que faz um redirecionamento 301. Se você estiver usando isso para redirecionar temporariamente seu domínio para o Facebook como uma página em breve, estará basicamente ferrado.
* pelo menos Chrome e Firefox, de acordo com quanto tempo os navegadores armazenam em cache o HTTP 301s? . Tentei apenas com o Chrome 45. Editar: O Safari 7.0.6 no Mac também faz cache, uma reinicialização do navegador não ajudou (o Link diz que no Safari 5 no Windows ele ajuda.)
** Eu tentei o javascript window.location = ''
, porque seria a solução que poderia ser aplicada na maioria dos casos - não funciona. Isso resulta em um loop infinito não detectado. No entanto, o php header('Location: new.url')
quebra o loop
Conclusão: use apenas 301s se tiver certeza absoluta de que nunca mais usará esse URL. Geralmente nunca no diretório raiz (example.com/)
O principal problema com o 301 é o navegador armazenará em cache o redirecionamento, mesmo que você tenha desativado o redirecionamento no nível do servidor.
É sempre melhor usar 302 se você estiver ativando o redirecionamento para uma janela de manutenção curta.