Como mostrar ao visitante uma página web movido e retornar um redirecionamento código de status HTTP 301 resposta em Django?

StackOverflow https://stackoverflow.com/questions/276286

Pergunta

Quando uma página web mudou-se para um novo local, como faço para mostrar a página web movido e retornar um código de status de resposta HTTP 301 redirecionamento permanente em Django ?

Foi útil?

Solução

   from django import http

   return http.HttpResponsePermanentRedirect('/yournewpage.html')

o navegador irá obter o 301, e ir para /yournewpage.html como esperado. a outra resposta é tecnicamente correto, em que python não está a lidar com o redirecionamento per se, o navegador é. isso é o que está acontecendo sob o capô:

Browser             Python         HTTP
   ------------------->            GET /youroldpage.html HTTP/1.1

   <-------------------            HTTP/1.1 301 Moved Permanently
                                   Location: /yournewpage.html
   ------------------->            GET /yournewpage.html HTTP/1.1

Outras dicas

Você não pode.

301 é um código de retorno HTTP que está diretamente postas em prática pelo navegador. Muitos sites de lidar com essas duas questões por enviar primeiro o usuário para uma página de redirecionamento-er que informa ao usuário sobre a mudança e, em seguida, X segundos depois envia-los para a nova página. Mas a página de redirecionamento-er deve tem um código 200.

Uma pequena variante é detectar o mecanismo de busca (por IP e / ou agente de usuário) e dar -los a 301. Dessa forma, os resultados da pesquisa apontam para sua nova página.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top