簡體   English   中英

Heroku Django:重定向所有www請求。到根域

[英]Heroku Django: Redirect all requests for www. to root domain

我需要將來自www.mysite.com所有請求重定向到mysite.com

在rails中找到了解決方案 ,但是我怎么能在django / python中做到這一點?

我可以解決的唯一解決辦法是由GoDaddy的主持人發布,如上所述。 好像我無法通過GoDaddy的DNS管理器解決這類問題。

任何提示或想法?

提前致謝。

[PROJECT_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)

然后,在項目的settings.py

  • 添加REMOVE_WWW = True
  • 在Django的SecurityMiddleware之后,最好在Django的Common Middleware之前,將[PROJECT_NAME].middleware.RemoveWWWMiddleware添加到MIDDLEWARE列表中。
  • 當然,還要確保沒有設置PREPEND_WWW = True

這個中間件基於Django的CommonMiddleware

解決了這個問題:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM