2016-06-12 2 views
0

Я пытаюсь навсегда перенаправить унаследованный корневой URL в новое место в Django (размещенном на Red Hat Openshift).Перенаправление устаревшего корневого URL-адреса в django

Я пробовал this solution, но не могу заставить его работать (даже если это самый простой случай http и без дальнейшего пути). Я не испытываю с wsgi, как вы, наверное, догадываетесь, и вся помощь очень ценится.

Вот моя попытка отредактировать последнюю часть wsgi.py (перенаправление с www.olddomain.com на www.newdomain.com). Когда я пытаюсь развернуть его, пытаясь достичь www.olddomain.com результатов в ошибке («Не удается подключиться к этой странице»):

... 
from django.core.wsgi import get_wsgi_application 

_application = get_wsgi_application() 

def application(environ, start_response): 
    if environ['HTTP_HOST'][:17] == 'www.olddomain.com': 
    start_response('301 Redirect', [('Location', 'http://www.newdomain.com/'),]) 
    return [] 

    return _application(environ, start_response) 

Спасибо за вашу помощь

+0

Кроме того, '[: 21]' возможно, не так, как вы думаете. Например, '' Это пример строки slice '[: 21] 'output' Это пример '(первые 21 символ). В зависимости от длины строки вашего домена, которая может работать или не работать. – FlipperPA

+0

Спасибо, я исправил срез, чтобы он соответствовал примерному домену, но в остальном идея состоит в том, чтобы исключить дополнительный путь GET-информации (не уверен, что HTTP_HOST будет нести эту информацию) – ptav

ответ

0

Проверьте уровень отступа , Кроме того, убедитесь, что значение переменной окружения HTTP_HOST является старым доменом.

from django.core.handlers.wsgi import WSGIHandler 


_application = WSGIHandler() 


def application(environ, start_response): 
    if environ['HTTP_HOST'][:21] != 'www.example.com': 
     start_response('301 Redirect', [ 
      ('Location', 'http://www.example.com/'), 
     ]) 
     return [] 
    return _application(environ, start_response) 
+0

Отступ исправлен (была проблема с сообщением, а не оригинальный код). Спасибо, что указали это – ptav

Смежные вопросы