在appengine的app.yaml中指定自定义URL模式?

3 投票
1 回答
575 浏览
提问于 2025-04-15 23:44

我想要一个自定义的网址,格式是这样的:

example.com/site/yahoo.com

这个网址会调用一个脚本,实际上是这样调用的:

example.com/details?domain=yahoo.com

请问可以通过app.yaml来实现吗?

基本的想法就是用“yahoo.com”这个输入去调用“details”。

1 个回答

4

你不能直接重写网址,但可以用正则表达式的分组来实现类似的效果。

在你的app.yaml文件中,可以试试这样的写法:

handlers:
- url: /site/(.+)
  script: site.py

然后在你的site.py文件中:

SiteHandler(webapp.RequestHandler):
    def get(self, site):
        # the site parameter will be what was passed in the URL!
        pass

def main():
    application = webapp.WSGIApplication([('/site/(.+)', SiteHandler)], debug=True)
    util.run_wsgi_app(application)

发生的事情是,任何在请求网址中/site/后面的内容都会被传递到SiteHandlerget()方法中的site参数里。这样你就可以在/details?domain=yahoo.com这个网址上做你想做的事情,或者直接跳转到那个网址。

撰写回答