django:临时重定向和永久重定向有什么区别?

use*_*200 7 django redirect httpresponse django-views http-redirect

好的,如果你去这里的文件:https: //docs.djangoproject.com/en/dev/topics/http/shortcuts/

并向下滚动以查看redirect()的最后一个示例,它说"默认情况下,redirect()返回一个临时重定向.所有上述表单都接受一个永久参数;如果设置为True,将返回一个永久重定向:"

现在,临时重定向和永久重定向之间有什么区别?我正在使用它,以便当用户登录并进行身份验证时,然后将其重定向到登录页面.我应该使用HttpResponseRedirect()吗?它是否提供使用redirect()而不是HttpResponseRedirect()的任何好处?

Bra*_*don 7

有两种方法可以返回301永久重定向:

from django.shortcuts import redirect

def my_view(request):
    # some code here
    return redirect('/some/url/', permanent=True)
Run Code Online (Sandbox Code Playgroud)

https://docs.djangoproject.com/en/1.5/topics/http/shortcuts/#redirect

要么:

from django.http import HttpResponsePermanentRedirect

    def my_view(request):
        # some code here
        return HttpResponsePermanentRedirect('/some/url')
Run Code Online (Sandbox Code Playgroud)

https://docs.djangoproject.com/en/1.5/ref/request-response/#django.http.HttpResponsePermanentRedirect

  • 我会使用临时重定向。永久重定向用于资源 URL 更改时。请参阅:http://en.wikipedia.org/wiki/HTTP_301 (2认同)

Bou*_*ner 7

只需在Brandon的帖子中添加一条关于你的问题的注释,两者之间有什么区别.临时和永久重定向之间的主要区别在于第三方如何看待它.如果Google看到永久重定向,则可能会认为旧网站已消失,并会更新所有匹配以直接访问新网址.有人说谷歌赞成永久重定向,因为垃圾邮件发送者经常使用临时重定向.

临时重定向的情况是例如在您自己的站点上链接到下载镜像/静态文件服务器的URL的内部重写.在这种情况下,重定向站点可能保持不变,而其他服务器地址可能会更改(例如,主机静态内容,无论哪里最便宜).使用永久重定向可能会带来问题(想想手机上的播客播放器会记住此类重定向,并且在移动静态文件服务器时无法识别它).