Django - 使用 www 重定向到版本

Posted

技术标签:

【中文标题】Django - 使用 www 重定向到版本【英文标题】:Django - redirect to version with www 【发布时间】:2011-10-24 00:06:56 【问题描述】:

在 Django 中,是否有一种简单的方法可以将所有内容从没有 www 的域重定向到有它的版本?我的意思是从 http://example.com 到 http://www.example.com。

【问题讨论】:

【参考方案1】:

我有。在设置中是 PREPEND_WWW。

https://docs.djangoproject.com/en/dev/ref/settings/?from=olddocs#prepend-www

【讨论】:

正如@adamp 在另一个回复中提到的那样,这实际上是非常 错误并且不是真的推荐,不幸的是:***.com/questions/41792064【参考方案2】:

正如docs所说

如果 PREPEND_WWW 为 True,则缺少前导“www”的 URL。将被重定向到以“www”开头的相同 URL。

默认情况下,PREPEND_WWW 设置为 False。您可以在设置中将其更改为 True。

PREPEND_WWW = True

要完成这项工作,您必须在中间件中包含 CommonMiddleware

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
)

【讨论】:

这最初看起来是一个很好的解决方案,但我很快发现了 PREPEND_WWW 的各种限制,并采用了服务器级别的解决方案。 ***.com/questions/41792064/… 这应该是公认的答案。如果你没有设置 CommonMiddleware 什么都不会发生。【参考方案3】:

您也可以通过正确的 DNS 配置跳过前缀。

【讨论】:

以上是关于Django - 使用 www 重定向到版本的主要内容,如果未能解决你的问题,请参考以下文章

django 重定向

如何在 Django 下将 domain.com 重定向到 WWW.domain.com?

Docker + Gunicorn + Nginx + Django:将非 www 重定向到 AWS Route 53 上的 www

Django 唯一 URL 重定向问题

使用www从非www http重定向到https

Nginx 重定向(非 www 到 www)不适用于 Certbot