diff options
| author | Tim Graham <timograham@gmail.com> | 2014-08-14 09:32:50 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-08-14 09:36:41 -0400 |
| commit | fe38be96c1769ee83c65246704d2ae435c8d4150 (patch) | |
| tree | 19a0e1a0b610b644f893e6f3877e361da54a4a3f /django | |
| parent | cf79b57ad09c145b82ccaab798d88958316027cf (diff) | |
Fixed #21579 -- Made LocaleMiddleware respect script prefix.
Thanks buettgenbach at datacollect.com for the report and patch.
Diffstat (limited to 'django')
| -rw-r--r-- | django/middleware/locale.py | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/django/middleware/locale.py b/django/middleware/locale.py index 0867e3d60f..996b2d4c5b 100644 --- a/django/middleware/locale.py +++ b/django/middleware/locale.py @@ -1,7 +1,7 @@ "This is the locale selecting middleware that will look at accept headers" from django.conf import settings -from django.core.urlresolvers import (is_valid_path, get_resolver, +from django.core.urlresolvers import (is_valid_path, get_resolver, get_script_prefix, LocaleRegexURLResolver) from django.http import HttpResponseRedirect from django.utils.cache import patch_vary_headers @@ -45,9 +45,18 @@ class LocaleMiddleware(object): path_valid = is_valid_path("%s/" % language_path, urlconf) if path_valid: - language_url = "%s://%s/%s%s" % ( - request.scheme, request.get_host(), language, - request.get_full_path()) + script_prefix = get_script_prefix() + language_url = "%s://%s%s" % ( + request.scheme, + request.get_host(), + # insert language after the script prefix and before the + # rest of the URL + request.get_full_path().replace( + script_prefix, + '%s%s/' % (script_prefix, language), + 1 + ) + ) return self.response_redirect_class(language_url) if not (self.is_language_prefix_patterns_used() |
