1

我目前正在使用模块,这是 appengine 中用于子域路由的一个相对较新的概念。一切正常,除了样式表和图像等静态资源似乎只加载在“默认”模块而不是我正在使用的“管理”模块。

默认模块的 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

有什么问题和解决方法。

4

1 回答 1

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
于 2013-11-13T04:12:20.717 回答