Pergunta

Como posso trabalhar com sub-domínio no Google App Engine (python).

Eu quero ficar primeira parte de domínio e tomar alguma ação (manipulador).

Exemplo:
product.example.com -> enviá-lo para produtos manipulador
user.example.com -> enviá-lo para os usuários manipulador

Na verdade, usando caminho virtual Eu tenho esse código:

  application = webapp.WSGIApplication(
    [('/', IndexHandler),
     ('/product/(.*)', ProductHandler),
     ('/user/(.*)', UserHandler)
  ]
Foi útil?

Solução

WSGIApplication não é capaz de roteamento baseado em domínio. Em vez disso, você precisa criar um aplicativo separado para cada subdomínio, como este:

applications = {
  'product.example.com': webapp.WSGIApplication([
    ('/', IndexHandler),
    ('/(.*)', ProductHandler)]),
  'user.example.com': webapp.WSGIApplication([
    ('/', IndexHandler),
    ('/(.*)', UserHandler)]),
}

def main():
  run_wsgi_app(applications[os.environ['HTTP_HOST']])

if __name__ == '__main__':
  main()

Como alternativa, você pode escrever sua própria subclasse WSGIApplication que sabe como lidar com múltiplos hosts.

Outras dicas

Eu gostei da idéia de Nick, mas eu tive um problema um pouco diferente. Eu queria corresponder a um determinado subdomínio para segurá-lo um pouco diferente, mas todas as outras sub-domínios devem ser tratadas da mesma. Então aqui é o meu exemplo.

import os

def main():
   if (os.environ['HTTP_HOST'] == "sub.example.com"):
      application = webapp.WSGIApplication([('/(.*)', OtherMainHandler)], debug=True)
   else:
      application = webapp.WSGIApplication([('/', MainHandler),], debug=True)

   run_wsgi_app(application)


if __name__ == '__main__':
   main()
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top