如何在nginx创建临时重定向和永久重定向

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在nginx创建临时重定向和永久重定向相关的知识,希望对你有一定的参考价值。

参考技术A http重定向是将一个域名或者地址重新指向另一个域名或地址的方式。重定向的方式有多种,每一种对客户端而言都有些不同之处。其中两种最常见的重定向方式是临时重定向和永久重定向。

临时重定向的返回码是 302。 临时重定向是用于一个url暂时需要通过一个临时站点进行服务的场景。当你的网站需要进行临时维护时,你可能就会希望在你进行维护期间,将访问重定向到另一个临时页码,在页面中提供临时服务或者通知用户网站正在进行维护,很快会恢复服务。

永久重定向的返回码是 301。这个返回码希望告诉浏览器,应该放弃访问当前的url,并不再尝试访问当前URL。这种方式适用于当你的站点进行了永久性的迁移的情况,比如进行了域名更换等。

你可以通过在nginx的配置中向server 配置块中添加如下内容来创建一个临时重定向:

类似地,可以添加如下内容来创建一个永久重定向:

就下来将会对nginx 中每种类型的重定向进行更加深入的解释,以及给出一些特别案例的用法。(待更新。。。。。)

ref: How To Create Temporary and Permanent Redirects with Nginx

同步自个人博客 hxysayhi

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

【中文标题】django:临时重定向和永久重定向有啥区别?【英文标题】:django: what's the difference between a temporary redirect and a permanent redirect?django:临时重定向和永久重定向有什么区别? 【发布时间】:2013-10-05 02:01:48 【问题描述】:

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

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

现在,临时重定向和永久重定向有什么区别?我正在使用它,以便当用户登录并通过身份验证时,将他重定向到登录页面。我应该改用 HttpResponseRedirect() 吗?使用 redirect() 而不是 HttpResponseRedirect() 有什么好处吗?

【问题讨论】:

它不是 django,而是标准的 HTTP 术语:webdesign.about.com/od/http/qt/tip301v302redir.htm 哦,完美,谢谢.. 但是,嗯,HttpResponseRedirect 是永久重定向还是临时重定向? 临时,不带参数permanent = True 嗯,哦,好吧,在您看来,如果我想在用户通过身份验证后重定向到登录页面,我应该使用临时还是永久? 使用 django 提供的redirect()。这只是表示其他 URL 上的资源可用的一种安全方式。 【参考方案1】:

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

from django.shortcuts import redirect

def my_view(request):
    # some code here
    return redirect('/some/url/', permanent=True)

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')

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

【讨论】:

好的,那么在您看来,如果我想在用户通过身份验证后重定向到登录页面,我应该使用临时还是永久? 我会使用临时重定向。永久重定向适用于资源 URL 更改时。见:en.wikipedia.org/wiki/HTTP_301【参考方案2】:

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

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

【讨论】:

以上是关于如何在nginx创建临时重定向和永久重定向的主要内容,如果未能解决你的问题,请参考以下文章

如何在 nginx 服务器上做 301 重定向

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

Nginx学习笔记15rewrite之redirect临时重定向

如何在 ASP.Net MVC 中执行 301 永久重定向路由

flask第十四篇——重定向

NGINX - 301/永久重定向(*.cloudapp.azure.com 到 domain.com)