2

Google App Engineでのサブドメインの操作に関する質問では、次のコードが提案されました。

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

私の質問は、これをローカルでテストするにはどうすればよいですか?ローカルでテストしている場合、ホストは「localhost:8080」であり、どのドメインでもありません。

4

1 に答える 1

2

Hostsファイルに2つの新しいエントリを作成します。

127.0.0.1       product.example.com
127.0.0.1       user.example.com

ローカルGAEアプリケーションをデフォルトのHttpポート80で実行します。

何らかの理由でポート80でGAEを実行できない場合はapplication.py、ローカルポート番号を次のように変更してみてください。

if os.environ['SERVER_SOFTWARE'].startswith('Dev'):
    PORT=':8080'
else:
    PORT=''

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

または、このようにメイン関数をさらに適切に変更します(@Nickのコメントに感謝します):

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

次のアドレスを使用して、ローカルアプリケーションをテストする準備ができているはずです。http:
//product.example.com :8080
http://user.example.com:8080

Hosts本番サーバーにアクセスできるようにするには、ファイルを元に戻すことを忘れないでください。

于 2011-03-26T13:22:29.563 に答える