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

Python 在Google Appengine的app.yaml中定义查询参数,python,google-app-engine,app.yaml,Python,Google App Engine,App.yaml,我想根据查询参数提供静态文件。更具体地说,我想为搜索引擎优化提供预渲染快照。这些页面托管在Google Appengine上,所以我使用app.yaml来定义这些URL handlers: # Consider anything matching a dot static content. - url: /(.*\..*)$ static_files: dist/\1 upload: dist/(.*\..*)$ # Serve snapshots for seo - url: /?_

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

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

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

我很高兴被证明是错的,但我很确定在通过
app.yaml
发送时没有考虑查询参数。我遇到了完全相同的问题。应用程序引擎没有添加对静态查询参数进行调度的功能,这有点蹩脚。。。无论如何

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)

这段代码基本上猜测您是否在
\u escaped\u fragment\u
查询参数上进行调度,并相应地修改输出。我不知道这比将
index.html
放在
static\u文件中要少多少(如果有的话):
app.yaml
处理程序中的
index.html
你试图获取的url是什么?谷歌机器人会获取任何url。例如,我定义了
/support
,所以googlebot将获取
/?\u转义\u片段\u=support
。它是一个AngularJS站点,因此
/?\u escape\u fragment\u=support
应该获取一个预呈现的html文件以对其进行索引。解决方法是创建一个处理程序,该处理程序要么返回dist/index.html(当escape\u fragment不在查询字符串中时),要么返回给定escape\u fragment的snapshop html。我不知道以这种方式提供服务需要多少额外的费用。我本来希望得到一个答案,但不幸的是,我认为这个答案是正确的。当我仍然有问题的时候,我已经建立了类似的东西。如今,谷歌为JavaScript呈现的页面编制索引,使得
\u转义的\u片段
响应不那么重要。(对其他搜索引擎仍然有用。)好的观点。不幸的是,我仍然有一个动态站点,除非您使用javascripting UI元素,否则大部分内容不会显示,因此转义的_片段在我的特定情况下仍然很有用。但是,是的,我同意,如果你的大部分内容显示在最初的javascript呈现上,那么谷歌可能会处理得很好。