Django замена повторяющихся слэшей в url

Apr 6, 2015 17:35 · 72 words · 1 minute read django python

Возникла необходимость удалять слэши в url. Пример:

http://example.com///
http://example.com/one//two//

Решение довольно простое. В ursl.py пишем

url(r'\/{2,}', 'views.redirect_to'),

Тем самым производим поиск r’\/{2,}’ слэшей от 2 и более. Далее совершаем замену на один слэш.

import re
def redirect_to(request):
    return redirect(re.sub(r'\/{2,}', '/', request.path))

P.S. Если используете nginx, то в конфиге в контексте http или server выставите merge_slashes off;

Данная директива запрещает преобразование URI путём замены двух и более подряд идущих слэшей (“/”) на один.