2016-08-16 52 views
0

是否可以配置app.yaml以使用兩個不同的PHP腳本,一個處理裸域,另一個處理所有其他子域?app.yaml中的GAE子域

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

回答

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_moduleapp.yaml路由是添加的路徑模式,以及和恢復它在部署生產時。如果在生產中保留此路徑模式,則不需要所有此模塊故事,因爲您可以直接在app.yaml中鎖定它。

說明:只是使用調度文件的自動路由不適用於本地devserver,除非您需要自己向各個模塊「域」(實際上不同的Listeninging端口)發出請求,否則模塊可以正常工作。這是在這種情況下,devserver的行爲示例,顯示每個模塊的基本URL:

/usr/bin/python2.7 /usr/local/google_appengine/dev_appserver.py --host 0.0.0.0 --log_level=debug dispatch.yaml main/main.yaml buildin/buildin.yaml 
WARNING 2016-08-16 16:11:18,474 application_configuration.py:786] Hostname routing is not supported by the development server. The following dispatch entries will not match any requests: 
<DispatchEntry 
    url=buildin-dot-myapp.appspot.com/* 
    service=None 
    module=buildin 
    > 
INFO  2016-08-16 16:11:18,506 sdk_update_checker.py:229] Checking for updates to the SDK. 
INFO  2016-08-16 16:11:18,716 sdk_update_checker.py:257] The SDK is up to date. 
INFO  2016-08-16 16:11:18,884 api_server.py:205] Starting API server at: http://localhost:36398 
INFO  2016-08-16 16:11:18,885 dispatcher.py:185] Starting dispatcher running at: http://0.0.0.0:8080 
INFO  2016-08-16 16:11:18,890 dispatcher.py:197] Starting module "default" running at: http://0.0.0.0:8081 
INFO  2016-08-16 16:11:18,893 dispatcher.py:197] Starting module "buildin" running at: http://0.0.0.0:8082 
INFO  2016-08-16 16:11:18,897 admin_server.py:116] Starting admin server at: http://localhost:8000 
+0

如果第二個* my-domain.com/*不是* .mydomain.com/* ??? –

+0

是的 - 複製粘貼錯誤。修正:) –