Frage

Wie kann ich mit Sub-Domain in Google App Engine (Python) arbeiten.

Ich will ersten Domain-Teil bekommen und eine Aktion (Handler) nehmen.

Beispiel:
product.example.com -> es um Produkte Handler
senden user.example.com -> es den Benutzern Handler senden

Eigentlich mit virtuellem Pfad Ich habe diesen Code:

  application = webapp.WSGIApplication(
    [('/', IndexHandler),
     ('/product/(.*)', ProductHandler),
     ('/user/(.*)', UserHandler)
  ]
War es hilfreich?

Lösung

WSGIApplication ist nicht in der Lage Routing basierend auf Domäne. Stattdessen müssen Sie eine separate Anwendung für jede Sub-Domain erstellen, wie folgt aus:

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

Alternativ können Sie Ihre eigene WSGIApplication Unterklasse schreiben, der weiß, wie mehrere Hosts zu behandeln.

Andere Tipps

Ich mochte die Idee von Nick, aber ich hatte eine etwas andere Frage. Ich wollte eine bestimmte Sub-Domain übereinstimmen es ein bisschen anders zu handhaben, sondern auch alle anderen Sub-Domains sollten die gleiche behandelt werden. So, hier ist mein Beispiel.

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()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top