Como mostrar ao visitante uma página web movido e retornar um redirecionamento código de status HTTP 301 resposta em Django?
-
07-07-2019 - |
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 ?
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.