- December 14, 2007
- middleware url redirect domain
- 4 (after 4 ratings)
Sometimes you need to make redirects that involve domains, you can't define those on the site urls, this middleware lets you define multiple redirects on your site settings.
Note: You also can use the web server to do this, but I have found this middleware a useful tool to quickly or temporarily define redirects.
Depending on your needs you may also find useful snippet 434.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
import re from django.http import HttpResponsePermanentRedirect from django.conf import settings class UrlRedirectMiddleware: """ This middleware lets you match a specific url and redirect the request to a new url. You keep a tuple of url regex pattern/url redirect tuples on your site settings, example: URL_REDIRECTS = ( (r'www\.example\.com/hello/$', 'http://hello.example.com/'), (r'www\.example2\.com/$', 'http://www.example.com/example2/'), ) """ def process_request(self, request): host = request.META['HTTP_HOST'] + request.META['PATH_INFO'] for url_pattern, redirect_url in settings.URL_REDIRECTS: regex = re.compile(url_pattern) if regex.match(host): return HttpResponsePermanentRedirect(redirect_url)