Heroku Django:将对www.的所有请求重定向到根域
我需要将来自Heroku Django:将对www.的所有请求重定向到根域,heroku,dns,Heroku,Dns,我需要将来自www.mysite.com的所有请求重定向到mysite.com 我已经找到了,但是如何在django/python中实现呢 唯一的解决办法,我可以罚款,这是由一个版主在戈达迪是上面。似乎我无法通过GoDaddy的DNS管理器解决此类问题 有什么提示或想法吗 提前感谢。解决此问题: from django.http import HttpResponsePermanentRedirect class WWWRedirectMiddleware(object): def p
www.mysite.com
的所有请求重定向到mysite.com
我已经找到了,但是如何在django/python中实现呢
唯一的解决办法,我可以罚款,这是由一个版主在戈达迪是上面。似乎我无法通过GoDaddy的DNS管理器解决此类问题
有什么提示或想法吗
提前感谢。解决此问题:
from django.http import HttpResponsePermanentRedirect
class WWWRedirectMiddleware(object):
def process_request(self, request):
if request.META['HTTP_HOST'].startswith('www.'):
return HttpResponsePermanentRedirect('http://mysite.com')
在
[PROJECT\u NAME]/middleware.py
中创建您自己的中间件,如下所示:
from django.conf import settings
from django.http import HttpResponsePermanentRedirect
from django.utils.deprecation import MiddlewareMixin
class RemoveWWWMiddleware(MiddlewareMixin):
"""
Based on the REMOVE_WWW setting, this middleware removes "www." from the
start of any URLs.
"""
def process_request(self, request):
host = request.get_host()
if settings.REMOVE_WWW and host and host.startswith('www.'):
redirect_url = '%s://%s%s' % (
request.scheme, host[4:], request.get_full_path()
)
return HttpResponsePermanentRedirect(redirect_url)
然后,在项目的设置.py
中:
- 添加
REMOVE\u WWW=True
- 并添加
删除到[PROJECT_NAME].middleware。将wwwmiddleware
列表中,在Django的SecurityMiddleware之后,最好在Django的通用中间件之前middleware
- 当然,还要确保没有设置
PREPEND\u WWW=True
该中间件基于。如果您同时运行本地开发服务器,您将如何使用该中间件?@alper使用if-not调试示例Jeff,非常感谢您——我为同一问题挣扎了几天,这解决了所有问题。谢谢这应该是可以接受的答案-我可以确认这个解决方案在Django==2.0.2时可以完美地工作。非常感谢,杰夫!我在DNS方面做这件事有困难。