Login

NoDoubleSlashes middleware

Author:
simon
Posted:
January 21, 2008
Language:
Python
Version:
.96
Tags:
middleware urls
Score:
2 (after 2 ratings)

I needed this to work around a poorly configured redirecting service.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
from django.http import HttpResponseRedirect
import re

multislash_re = re.compile('/{2,}')

class NoDoubleSlashes:
    """
    Some poorly configured redirecting sites (like 123-reg) add extra slashes to 
    URLs when they are redirected, e.g. example.com/blah redirects to 
    example.net//blah . This middleware eliminates any multiple slashes from 
    incoming request paths.
    """
    def process_request(self, request):
        if '//' in request.path:
            new_path = multislash_re.sub('/', request.path)
            return HttpResponseRedirect(new_path)
        else:
            return None

More like this

Comments

Please login first before commenting.