app.yaml中的GAE子域

时间:2016-08-16 15:50:35

标签: php google-app-engine

是否可以将app.yaml配置为使用两个不同的PHP脚本,一个处理裸域而另一个处理所有其他子域?

runtime: php55
api_version: 1

handlers:
- url: /.*
  script: naked.php
- url: /.*.mydomain.com
  script: sub-domains.php

我现在正在阅读模块 - 这会解决我的问题吗?

编辑|这个链接让我相信我可以通过使用服务和自定义调度配置来实现我的目标吗?

https://cloud.google.com/appengine/docs/python/config/dispatchref

2 个答案:

答案 0 :(得分:1)

不可能使用app.yaml模式路由,因为模式仅应用于请求的URL的文件路径部分(没有域名)。

是的,可以将模块映射到不同的域,并使用基于dispatch.yaml文件的路由,这些文件在某些​​方面看起来如下:

dispatch:
  - url: "mydomain.com/*"
    module: naked_domain_module

  - url: "*mydomain.com/*"
    module: subdomain_module

注意:

  • dispatch.yaml事项中的规则顺序 - 首次匹配胜利
  • 没有匹配的请求被发送到默认模块(您可能需要随机播放规则顺序/内容,具体取决于您是否要将其中一个模块设为默认模块)
  • 您不能在devserver(它不支持主机名路由)上测试此路由,除非您在请求路径中也有更具体的模式 - 可能只用于本地测试? - 您可以为其添加调度规则
像这样:

- url: "*/naked/*"
  module: naked_domain_module

但在这种情况下,您还需要在naked_domain_module的{​​{1}}路由中考虑添加的路径模式,并在生产中部署时将其还原。如果您将此路径模式保留在生产中,那么您不需要所有这些模块故事,因为您可以直接在app.yaml上锁定它。

澄清:只是使用调度文件的自动路由不能与本地devserver一起工作,模块工作正常,除非你需要向相应的模块"域" (实际上是不同的端口)你自己。这是devserver在这种情况下的行为示例,显示了每个模块的基本URL:

app.yaml

答案 1 :(得分:0)

您正在寻找App Engine调度: https://cloud.google.com/appengine/docs/php/how-requests-are-routed

dispatch.yaml的详细信息如下: https://cloud.google.com/appengine/docs/php/config/dispatchref

希望这有帮助!