在Google Appengine中的app.yaml中定义查询参数

时间:2014-02-25 15:06:15

标签: python google-app-engine app.yaml

我想根据查询参数提供静态文件。更具体地说,我想为搜索引擎优化提供预呈现的快照。页面托管在Google Appengine上,因此我使用app.yaml来定义这些网址。

handlers:
# Consider anything matching a dot static content.
- url: /(.*\..*)$
  static_files: dist/\1
  upload: dist/(.*\..*)$

# Serve snapshots for seo
- url: /?_escaped_fragment_=(.*)
  static_files: dist/snapshots/\1
  upload: dist/(.*)$

# Otherwise let Angular handle it.
- url: /(.*)
  static_files: dist/index.html
  upload: dist/index.html

但是,当我使用查询参数_escaped_fragment_获取网址时,会触发最后一个网址处理程序。是否可以在网址中定义查询参数?如果是这样,我做错了什么?

2 个答案:

答案 0 :(得分:4)

我很高兴被证明是错误的,但我很确定在通过app.yaml进行调度时不会考虑查询参数。

答案 1 :(得分:0)

我遇到了完全相同的问题。 App Engine没有添加调度静态查询参数的能力,这有点蹩脚......无论如何。

import webapp2, urllib, logging, json, os

dp = os.path.dirname(os.path.realpath(__file__))
fp = os.path.join(dp, "resources", 'index.html')
w = open(fp, 'r').read()

class Fragment(webapp2.RequestHandler):
  def get(self, pathname):
    if '_escaped_fragment_' in self.request.arguments():
      CODE_GOES_HERE_FOR_BUILDING_YOUR_FRAGMENT_RESPONSE
    else:
      self.response.write(w)

application = webapp2.WSGIApplication(
    [('/(.*)', Fragment)],
  debug=True)

此代码基本上猜测您是否正在调度_escaped_fragment_查询参数并相应地修改输出。我不知道这是多少(如果有的话),而不是index.html static_files: app.yaml中的{{1}}处理程序。