如何向访问者显示移动的网页并在Django中返回301重定向HTTP响应状态代码?

时间:2008-11-09 18:39:37

标签: python django http redirect http-headers

当网页移动到新位置时,如何显示移动的网页并在Django中返回301永久重定向HTTP响应状态代码?

2 个答案:

答案 0 :(得分:9)

   from django import http

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

浏览器将获得301,并按预期转到/yournewpage.html。另一个答案在技术上是正确的,因为python本身并不处理重定向,浏览器是。这就是幕后发生的事情:

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

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

答案 1 :(得分:3)

你不能。

301是浏览器直接操作的HTTP返回码。许多站点通过首先将用户发送到重定向页面来处理这两个问题,该页面告诉用户有关更改的信息,然后X秒后将它们发送到新页面。但重定向页必须有200个代码。

一个小变体是检测搜索引擎蜘蛛(通过IP和/或用户代理)并将他们 301.这样搜索结果指向您的新页面。