app.yaml url配置谷歌应用程序引擎

时间:2012-09-06 17:45:50

标签: google-app-engine

我对GAE比较陌生,我在理解URL映射方面遇到了一些困难。

我有一组静态的数据(HTML模板,登录表单,js等),以及一个动态的部分。

我目前的app.yaml如下:

handlers:
- url: /.*
  static_dir: /static
- url: /service/.*
  script: _go_app
  login: required

这里的想法是http://myapp/service/foo将路由到应用,而http://myapp/foo.html之类的任何内容都应该投放/static/foo.html。但是,我在静态请求中收到404错误。

想法?

3 个答案:

答案 0 :(得分:4)

根据documentation

  

url:网址前缀。此值使用正则表达式语法(因此必须转义正则表达式特殊字符),但它不应包含分组。所有以此前缀开头的URL都由此处理程序处理,使用前缀后的URL部分作为文件路径的一部分。

在您指定url: /.*的情况下,前缀将为foo.html,而要获取的文件将为空文件名。

此外,处理程序从上到下进行评估,因此您需要更改顺序。

handlers:
- url: /service/.*
  script: _go_app
  login: required
- url: /
  static_dir: static

答案 1 :(得分:2)

顺序非常重要,因此除非将其移动到静态处理程序之上,否则您的/ service / handler可能永远不会被调用。此外,404s是由静态声明中的错误语法引起的。将处理程序更改为:

handlers:
- url: /service/.*
  script: _go_app
  login: required
- url: /
  static_dir: static

答案 2 :(得分:-1)

static_dir指令在与给定正则表达式匹配的前缀之后按名称提供文件。如果RE在.*中结束,则整个URL将被视为前缀,因此将不会遗留任何内容用作文件路径。

请尝试url: /

此外,处理程序按顺序匹配。

正则表达式/.*匹配您可以接收请求的所有网址,因此其后的任何内容都将永远不会匹配。把它放在最后。