我目前正在使用模块,这是一个相对较新的概念,用于子域路由的appengine。 一切正常,除了样式表和图像等静态资源似乎只在“默认”模块加载而不是我正在使用的“admin”模块。
默认模块的yaml文件,app.yaml是: -
application: check4se
version: v1
runtime: python27
api_version: 1
threadsafe: true
automatic_scaling:
max_idle_instances: 20
handlers:
- url: /stylesheets
static_dir: stylesheets
expiration: "1s"
- url: /images
static_dir: images
expiration: "1s"
- url: /js
static_dir: js
- url: .*
script: Main2.app
libraries:
- name: jinja2
version: latest
模块管理员的admin.yaml如下: -
application: check4se
module: admin
version: v1
runtime: python27
api_version: 1
threadsafe: false
automatic_scaling:
min_idle_instances: 2
handlers:
- url: .*
script: admin.app
- url: /_ah/login_required
script: do_openid_login.py
我使用dispatch.yaml将所有静态资源路由到我的默认模块: -
application: check4se
dispatch:
- url: "admin.check4se.appspot.com/*"
module: admin
- url: "*/images"
module: default
- url: "*/stylesheets"
module: default
- url: "*/js"
module: default
问题和解决方法是什么。
答案 0 :(得分:3)
我认为admin.yaml中的。*处理程序与/ _ah / login_required路径匹配,因此/ _ah / login_required路径永远不匹配,从不调用do_openid_login.py。
相反,将/ _ah / login_required处理程序放在。*处理程序之前。
application: check4se
module: admin
version: v1
runtime: python27
api_version: 1
threadsafe: false
automatic_scaling:
min_idle_instances: 2
handlers:
- url: /_ah/login_required
script: do_openid_login.py
- url: .*
script: admin.app
此外,您可能遇到与dispatch.yaml类似的问题
您可能希望首先放置静态资源路径,否则管理域上的任何内容都将转到管理资源,而不是默认资源。
application: check4se
dispatch:
- url: "*/images"
module: default
- url: "*/stylesheets"
module: default
- url: "*/js"
module: default
- url: "admin.check4se.appspot.com/*"
module: admin