[Django 1.0.2]
У меня есть вид, настроенный так:
(r'^redirect/(?P<object_id>\d+)/(?P<url>.*)/$',
'django.views.generic.simple.redirect_to',
{'content_type': SiteType}, 'clickout'),
Когда я получаю следующий URL, на локальном сервере разработки и на удаленном сервере mod_wsgi происходят две разные вещи:
# GET
"/redirect/2/http://www.example.com//"
# Remote server ends up (note the missing slash in the end)
"http://mydomain.com/example.com"
# Development server works as expected
"http://www.example.com/"
Я проверил заголовки HTTP, и он действительно пытается ввести неправильный URL:
"""HTTP/1.x 301 MOVED PERMANENTLY
Date: Thu, 26 Feb 2009 06:58:35 GMT
Server: Apache/2.0.52 (Red Hat) mod_wsgi/2.0 Python/2.5
Etag: "d41d8cd98f00b204e9800998ecf8427e"
Location: http://mydomain.com/example.com
Content-Type: text/html; charset=utf-8
Vary: User-Agent,Accept-Encoding
Content-Encoding: gzip
Content-Length: 20
"" "
В чем может быть проблема? Как я могу перенаправить на внешний URL?
Редактировать
Похоже, встраивание URL-адресов в URL-адреса не является хорошей идеей. И apache, и mod_wsgi сворачивают двойную косую черту. ( вот объяснение )
Но назначение целевого URL-адреса в качестве параметра работает нормально:
"/redirect/2/?url=http://www.example.com/"
Большое спасибо Sean F из Webfaction за помощь.