Redirect Multiple Domains to a Single Domain

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
from django.http import HttpResponseRedirect

class ValidateHostMiddleware(object):
    """
    In Apache's httpd.conf, you may have ServerName set to mysite.com.au along 
    with a number of aliases: mysite.com, mysite.net, my-site.com etc.

    This middleware redirects any request that isn't for mysite.com.au to that 
    domain, helping with SEO and brand recognition.
    """
    def process_request(self, request):
        if not request.META['HTTP_HOST'].endswith('mysite.com.au'):
            return HttpResponseRedirect('http://www.mysite.com.au/')

Comments

arne (on October 3, 2007):

Wouldn't it be "cleaner" to do this in the webserver's configuration?

I use something like this in my .htaccess:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.mydomain\.de$
RewriteRule ^(.*)$ http://www.mydomain.de/$1 [L,R=301]

this redirects every request where HTTP_HOST is not www.mydomain.de to www.mydomain.de and even keeps the path after the domain.

#

bartTC (on August 18, 2008):

Or redirecting without RewriteEngine:

<VirtualHost>
  ServerName example.com
  RedirectPermanent / http://example.net/
</VirtualHost>

#

(Forgotten your password?)

You may use Markdown syntax here, but raw HTML will be removed.