重定向应用

    要安装重定向应用程序,请按照这些步骤进行:

    1. 确保 django.contrib.sites 框架 。
    2. 'django.contrib.redirects' 添加到你的 INSTALLED_APPS 配置中。
    3. 在你的 配置中添加 'django.contrib.redirects.middleware.RedirectFallbackMiddleware'

    manage.py migrate 在数据库中创建一个 django_redirect 表。这是一个有 site_idold_pathnew_path 字段的查询表。

    完成了所有的工作。每当任何 Django 应用出现 404 错误时,这个中间件都会检查重定向数据库中请求的 URL,作为最后的手段。具体来说,它检查给定的 old_path 与站点 ID 对应的 设置的重定向。

    • 如果它找到了一个匹配的对象,并且 new_path 不是空的,它就会使用 301(“Moved Permanently”)重定向到 new_path。你可以将 RedirectFallbackMiddleware 子类化,并将 设置为 django.http.HttpResponseRedirect 以使用 302 Moved Temporary 重定向。
    • 如果它找到了一个匹配,并且 new_path 是空的,它就会发送一个 410(“Gone”)HTTP 头和空的(无内容)响应。
    • 如果没有找到匹配的请求,则继续照常处理。

    中间件只有在 404 时才会被激活——而不是 500 或任何其他状态码的响应。

    注意 的顺序很重要。一般来说,你可以把 RedirectFallbackMiddleware 放在列表的最后,因为这是最后的手段。

    如果你已经激活了 Django 的自动管理界面,你应该会在管理索引页上看到“重定向”部分。像编辑系统中的其他对象一样编辑重定向。

    通过 Python API

    class

    重定向由一个标准的 来表示,它位于 django/contrib/redirects/models.py 中。你可以通过 来访问重定向对象。例如:

    class middleware.``RedirectFallbackMiddleware

    你可以通过创建一个 RedirectFallbackMiddleware 的子类,并覆盖 response_gone_class 和/或 response_redirect_class 来改变中间件使用的 类。

    • 当在请求的路径上没有找到 Redirect 或有一个空的 new_path 值时使用的 类。

      默认为 HttpResponseGone