301 在 Django 中重定向 www 子域
Posted
技术标签:
【中文标题】301 在 Django 中重定向 www 子域【英文标题】:301 Redirect Within Django for www Subdomain 【发布时间】:2013-12-21 03:37:53 【问题描述】:我在我的 Python/Django 应用程序中使用 DNSimple 和 Heroku,但是无论有没有“www”都会访问该站点,并且基本上给了我两个不同的重复站点。我应该在我的应用程序中做一个重定向表单来解决这个问题。如何在 Django 中创建从没有“www”到“www”的 301 重定向?
【问题讨论】:
【参考方案1】:只需返回一个重定向案例,该请求是针对裸域发出的。
if not request.META.get('HTTP_HOST', '').startswith('www'):
return HttpResponseRedirect(
'http://www.example.com/' + request.get_full_path()
)
如果您使用基于类的视图,您可以将其设置为装饰器或将其放在基类中,但如果您在网络服务器级别处理此重定向,性能会更好。
您正在使用 PaaS 提供商,这是一个常见的用例,他们都有,请咨询他们的服务台。
使用 mod_rewrite 的方法有点离题,因为它与编程无关;像这样的东西应该放在虚拟主机配置中:
RewriteEngine on
RewriteCond %HTTP_HOST ^example\.com
RewriteRule ^(.*)$ http://www.example.com$1 [R=permanent,L]
【讨论】:
以上是关于301 在 Django 中重定向 www 子域的主要内容,如果未能解决你的问题,请参考以下文章
乘客(Ruby on Rails)中的301重定向从根域到www子域?