Permit to redirect desired domain name to the 'domain' of Site app. Useful if you have different domains name for the same website.
1. Add to your settings DOMAINS_ALIAS like this:
DOMAINS_ALIAS = (
'my-second-domain.com',
'www.my-second-domain.com',
'third-domain.com',
'www.third-domain.com',
)
notice: all these domains are redirected to the domain db entry of Site ID.
2. add all these domains to ServerAlias directive in your vhost apache configuration.
3. enable the middleware by adding to your MIDDLEWARE_CLASSES:
MIDDLEWARE_CLASSES = (
...
'utils.middleware.domainsalias.DomainsAliasMiddleware',
...
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | from django.conf import settings
from django.http import HttpResponseRedirect
from django.contrib.sites.models import Site
class DomainsAliasMiddleware:
'''
Redirect to Site 'domain' if target domain found in DOMAINS_ALIAS
'''
def process_request(self, request):
target_domain = request.META.get("HTTP_HOST", "localhost")
if hasattr(settings, 'DOMAINS_ALIAS'):
for domain in settings.DOMAINS_ALIAS:
if domain == target_domain:
return self._redirect(request)
return None
def _redirect(self, request):
if request.path == "": request.path = "/"
newurl = "%s://%s%s" % (request.is_secure() and 'https' or 'http', \
Site.objects.get_current().domain, request.path)
if request.GET:
newurl += '?' + request.GET.urlencode()
return HttpResponseRedirect(newurl)
|
More like this
- Template tag - list punctuation for a list of items by shapiromatron 11 months, 2 weeks ago
- JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 11 months, 3 weeks ago
- Serializer factory with Django Rest Framework by julio 1 year, 6 months ago
- Image compression before saving the new model / work with JPG, PNG by Schleidens 1 year, 7 months ago
- Help text hyperlinks by sa2812 1 year, 7 months ago
Comments
Please login first before commenting.