Простой способ создания перенаправлений в Twisted Web - это ресурс Redirect . Создайте его с помощью URL и поместите в иерархию ресурсов. Если он будет обработан, он вернет ответ перенаправления на этот URL:
from twisted.web.util import Redirect
from twisted.web.resource import Resource
from twisted.web.server import Site
from twisted.internet import reactor
root = Resource()
root.putChild("foo", Redirect("https://stackoverflow.com/"))
reactor.listenTCP(8080, Site(root))
reactor.run()
Будет запущен сервер, который отвечает на запрос http://localhost:8080/ с перенаправлением на https://stackoverflow.com/.
Если вы запускаете Django в контейнере WSGI, размещенном на HTTPS-сервере, возможно, у вас есть код, который выглядит примерно так:
from twisted.internet import reactor
from twisted.web.wsgi import WSGIResource
from twisted.web.server import Site
from django import some_wsgi_application_object # Not exactly
root = WSGIResource(reactor, reactor.getThreadPool(), some_wsgi_application_object)
reactor.listenSSL(8443, Site(root), contextFactory)
reactor.run()
Вы можете запустить дополнительный HTTP-сервер, который генерирует нужные вам перенаправления, просто добавив часть кода из первого примера во второй пример:
from twisted.internet import reactor
from twisted.web.wsgi import WSGIResource
from twisted.web.util import Redirect
from twisted.web.server import Site
from django import some_wsgi_application_object # Not exactly
root = WSGIResource(reactor, reactor.getThreadPool(), some_wsgi_application_object)
reactor.listenSSL(8443, Site(root), contextFactory)
old = Redirect("https://localhost:8443/")
reactor.listenTCP(8080, Site(old))
reactor.run()