Невозможно использовать схему маршрутизации app.yaml
, так как шаблоны применяются только к части пути к файлу запрашиваемого URL (без имени домена).
Да, модули могут быть отображены в различных областях, с маршрутизацией на основе файла dispatch.yaml
, который будет выглядеть как-то вдоль этих линий:
dispatch:
- url: "mydomain.com/*"
module: naked_domain_module
- url: "*mydomain.com/*"
module: subdomain_module
Примечания:
- порядок правил в
dispatch.yaml
вопросов - первые победы в матче
- Запросы без совпадений отправляются модулю по умолчанию (вам может потребоваться перетасовать порядок/содержание правила, в зависимости от того, хотите ли вы сделать один из модулей es по умолчанию)
- Вы не можете протестировать эту маршрутизацию на devserver (который не поддерживает маршрутизацию имени хоста), если у вас также нет более конкретного шаблона в пути запроса - возможно, для локального тестирования? - для которых вы можете добавить правило отправки,
так:
- url: "*/naked/*"
module: naked_domain_module
Но в этом случае необходимо учитывать, что добавлен шаблон пути в app.yaml
маршрутизации, в котором naked_domain_module
«s, а также и вернуться это при развертывании в производстве. Если вы сохраните этот шаблон пути в процессе производства, вам не понадобится вся эта история модуля, поскольку вы можете запереть его непосредственно в app.yaml
.
Уточнение: только автоматическая маршрутизация с использованием файла отправки не работает с локальным devserver, модули работают нормально, за исключением того, что вам нужно самому запросить соответствующие модули «домены» (фактически разные порты отправления). Это пример того, как ведет себя 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
Если второй * my-domain.com/* не может быть * .mydomain.com/* ??? –
Yep - ошибка копирования-вставки. Исправлена :) –