Джанго: Как перенаправить на внешний URL?

голоса
1

[Джанго 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 , не является хорошей идеей. Оба апач и mod_wsgi разрушаются двойные слеши. ( Здесь объяснение )

Но давая целевой URL в качестве параметра отлично работает:

/redirect/2/?url=http://www.example.com/

Большое спасибо Шон F от Webfaction поддержки помогает мне.

Задан 26/02/2009 в 08:02
источник пользователем
На других языках...                            


1 ответов

голоса
0

Как вы используете сервер mod_wsgi? Я ожидаю, что, поскольку вы работаете локальный сервер непосредственно через Django нет URL перезапись не происходит. На удаленном сервере URL-адрес перезаписывается, чтобы удалить двойной слэш, прежде чем она будет передана на ваше Джанго приложения.

Ответил 27/02/2009 в 11:36
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more