Domanda

Come posso lavorare con il sottodominio nel motore di app di Google (python).

Voglio ottenere la prima parte del dominio e intraprendere alcune azioni (gestore).

Esempio:
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; product.example.com - > inviarlo al gestore prodotti
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; user.example.com - > inviarlo al gestore utenti

In realtà, usando il percorso virtuale ho questo codice:

  application = webapp.WSGIApplication(
    [('/', IndexHandler),
     ('/product/(.*)', ProductHandler),
     ('/user/(.*)', UserHandler)
  ]
È stato utile?

Soluzione

WSGIApplication non è in grado di instradare in base al dominio. Invece, devi creare un'applicazione separata per ogni sottodominio, in questo modo:

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()

In alternativa, potresti scrivere la tua sottoclasse WSGIApplication che sa come gestire più host.

Altri suggerimenti

Mi è piaciuta l'idea di Nick, ma ho avuto un problema leggermente diverso. Volevo abbinare un sottodominio specifico per gestirlo un po 'diverso, ma tutti gli altri sottodomini dovrebbero essere gestiti allo stesso modo. Quindi, ecco il mio esempio.

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()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top