2009-05-08 9 views
19

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

Ich möchte erste Domain-Teil bekommen und etwas Aktion (Handler).

Beispiel:
          product.example.com -> senden Sie es an Produkte Handler
          user.example.com -> senden Sie es an Benutzer-Handler

Eigentlich benutze ich diesen virtuellen Pfad:

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

Antwort

26

WSGIApplication ist nicht in der Lage, basierend auf der Domäne zu routen. Stattdessen müssen Sie für jede Sub-Domain eine separate Anwendung 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.

+0

Vielen Dank! Haben Sie eine Probe dieser Sub WSGIApplication für mich? Ich sage mit Python ... – Zote

+0

Überprüfen Sie die Quelle für die aktuelle unter http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/ext/webapp/__init__ .py - Das Modifizieren der Methode __call__, um den Hostnamen zu berücksichtigen, sollte ziemlich einfach sein. –

+0

Der obige Code scheint nicht in der Produktion zu funktionieren, wenn beide Subdomains mit einer GAE-App verknüpft sind. Hat jemand das zur Arbeit gebracht? – kovshenin

2

Ich mochte die Idee von Nick, aber ich hatte ein etwas anderes Problem. Ich wollte eine bestimmte Subdomain zuordnen, um sie ein wenig anders zu behandeln, aber alle anderen Subdomains sollten gleich behandelt werden. Also hier ist mein Beispiel.

Verwandte Themen