我需要從www.mysite.com
的所有請求重定向到mysite.com
Heroku Django:重定向www的所有請求。以根域
我已經找到了solution in rails,但我怎麼能做到這一點在Django/Python的?
我可以罰款的唯一解決方案,由GoDaddy上的版主發佈的就是上述內容。好像我無法通過GoDaddy的DNS管理器解決這類問題。
任何提示或想法?
在此先感謝。
我需要從www.mysite.com
的所有請求重定向到mysite.com
Heroku Django:重定向www的所有請求。以根域
我已經找到了solution in rails,但我怎麼能做到這一點在Django/Python的?
我可以罰款的唯一解決方案,由GoDaddy上的版主發佈的就是上述內容。好像我無法通過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_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
[PROJECT_NAME].middleware.RemoveWWWMiddleware
到MIDDLEWARE
列表,在Django的SecurityMiddleware之後,最好在Django的Common Middleware之前。PREPEND_WWW = True
這個中間件是基於Django's CommonMiddleware。
如果你還運行本地開發服務器,你將如何使用它? – Alper
@alper使用一個如果不是DEBUG的例子 – 1ronmat