我想根据查询参数提供静态文件。更具体地说,我想为搜索引擎优化提供预呈现的快照。页面托管在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_
获取网址时,会触发最后一个网址处理程序。是否可以在网址中定义查询参数?如果是这样,我做错了什么?
答案 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}}处理程序。