19

Google App Engine(Python)でサブドメインを操作するにはどうすればよいですか。

最初のドメイン部分を取得して、何らかのアクション(ハンドラー)を実行したいと思います。

例:
     product.example.com->製品ハンドラーに
     送信user.example.com->ユーザーハンドラーに送信

実際、仮想パスを使用すると、次のコードがあります。

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

2 に答える 2

26

WSGIApplicationは、ドメインに基づいてルーティングすることはできません。代わりに、次のように、サブドメインごとに個別のアプリケーションを作成する必要があります。

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

または、複数のホストを処理する方法を知っている独自のWSGIApplicationサブクラスを作成することもできます。

于 2009-05-08T08:05:53.117 に答える
2

Nickのアイデアは気に入りましたが、少し違う問題がありました。1つの特定のサブドメインを一致させて少し異なる方法で処理したかったのですが、他のすべてのサブドメインは同じように処理する必要があります。これが私の例です。

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()
于 2010-11-30T17:28:58.663 に答える