Heroku Django: перенаправить все запросы на www. к корневому домену
Мне нужно перенаправить все запросы от www.mysite.com
до mysite.com
Я нашел решение в rails, но как я могу это сделать в django/python?
Единственное решение, которое я мог бы оценить, которое было опубликовано модератором на GoDaddy, было выше. Похоже, я не могу решить эту проблему через диспетчер DNS GoDaddy.
Любые подсказки или мысли?
Спасибо заранее.
Ответы
Ответ 1
Решено, что это:
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')
Ответ 2
Создайте собственное промежуточное ПО в [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 CommonMiddleware.