Use localeURL middleware with apache prefix
- by Olivier R.
Good morning everyone,
I Got a question about localeURL usage.
Everything works great for me with url like this :
www.mysite.com/
If I type www.mysite.com/ in adress bar, it turns correctly in www.mysite.com/en/ for example.
If I use the view change_locale, it's also all right (ie change www.mysite.com/en/ in www.mysite.com/fr/).
But my application use apache as server, and use a prefix for the site, that gives url like this :
www.mysite.com/prefix/
If I type www.mysite.com/prefix/ in the adress bar, the adress turns into www.mysite.com/en/ without prefix (so 404)
I change code of view to manage our settings.SERVER_PREFIX value :
def change_locale(request) :
"""
Redirect to a given url while changing the locale in the path
The url and the locale code need to be specified in the
request parameters.
O. Rochaix; Taken from localeURL view, and tuned to manage :
- SERVER_PREFIX from settings.py
"""
next = request.REQUEST.get('next', None)
if not next:
next = request.META.get('HTTP_REFERER', None)
if not next:
next = settings.SERVER_PREFIX + '/'
next = urlsplit(next).path
prefix = False
if settings.SERVER_PREFIX!="" and next.startswith(settings.SERVER_PREFIX) :
prefix = True
next = "/" + next.lstrip(settings.SERVER_PREFIX)
_, path = utils.strip_path (next)
if request.method == 'POST':
locale = request.POST.get('locale', None)
if locale and check_for_language(locale):
path = utils.locale_path(path, locale)
if prefix :
path = settings.SERVER_PREFIX + path
response = http.HttpResponseRedirect(path)
return response
with this customized view, i'm able to correctly change language, but i'm not sure that's the right way of doing stuff. Is there any option on localeURL to manage prefix of apache ?