我们有一个使用Google App Engine与Flask开发的网站。所以我们有裸域mysite.com(重定向到www.mysite.com)和子域名www.mysite.com
现在我们要添加另一个子域user.mysite.com,因此我们将其添加到App Engine自定义域和注册商,没有任何问题。
但是我们在user.mysite.com上看到了同一个网站的副本www.mysite.com(所有相同的页面,只是子域用户而不是www。)!
我们如何在user.mysite.com上显示另一个页面(如Hello world!),与www.mysite.com上的页面不同?
答案 0 :(得分:1)
您所询问的内容是内置于Flask中的Blueprints
:
http://flask.pocoo.org/docs/0.12/blueprints/
这很好地解释了子域名的Blueprint
设置:
http://exploreflask.com/en/latest/blueprints.html
对于一些简单的情况,您可以只测试request
。 Flask也有内置功能:
@app.before_request
def check_subdomain():
'''
This runs before all requests
'''
if "user." in request.environ.get('HTTP_HOST'):
SOME_GLOBAL = 'user'
return None
但是,听起来你想要使用Blueprints
。这是一个非常优雅的解决方案。
答案 1 :(得分:0)
可能的解决方案是部署dispatch.yaml文件,如this doc中所述。通过这种方式,您可以根据URL中的主机名将请求到您的子域路由到特定服务。
对于您的具体情况,这可能是dispatch.yaml文件:
dispatch:
# For www. subdomain.
- url: "www.mysite.com/"
service: [www-subdomain-frontend-service]
# For user. subdomain.
- url: "user.mysite.com/"
service: [user-subdomain-frontend-service]