在GAE中配置app.yaml以允许通过URL选择脚本

时间:2011-07-30 20:54:03

标签: google-app-engine

我在Google App Engine中创建了一个应用程序,它在传统浏览器中运行良好。主脚本叫做example.py(因为我一直在破解一个例子而且我从未改变它)。它调用一个html文件并按预期传入变量。

现在我想开发一个更适合移动设备的新版本。为此,我编写了一个名为example_mobile.py的新python脚本。它与example.py类似,只是它使用不同的样式表调用不同的html文件。我知道不雅,但我认为通过app.yaml文件实现起来很容易。

这是我的app.yaml文件:

application: (my application id string)
version: 1
runtime: python
api_version: 1

handlers:
- url: /remote_api
  script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
  login: admin

- url: /stylesheets
  static_dir: stylesheets

- url: /javascript
  static_dir: javascript

- url: /images
  static_dir: images

- url: /mobile/.*
  script: example_mobile.py

- url: /.*
  script: example.py

www。(我的域名).com从example.py中提取输出没问题。我希望www。(我的域名).com / mobile会从example_mobile.py中提取输出,但它不起作用。还试过www.mobile。(我的域名).com但没有运气。尝试在/ mobile结束时离开/.*但这也没有帮助。我切换了example_mobile.py和example.py来检查它不是python,我得到了预期的结果,所以我的格式化和使用app.yaml文件肯定有问题。似乎无法在GAE文档中找到类似的用例,因此非常感谢任何帮助。

谢谢,

Dessie

1 个答案:

答案 0 :(得分:1)

要触发/mobile/.*路线,您应该访问www.(my domain name).com/mobile/

一个简单的建议是让example.py/.*匹配,将路由部分留给WSGIApplication类。

application = webapp.WSGIApplication(
                                     [('/mobile', example.MobileHandler),
                                     ( '/', example.MainHandler)],
                                     debug=True)

这里的一条经验法则是,在app.yaml上,您应该为不同的应用程序或不同的组件设置不同的路由。

mobile是不同的应用程序/组件,还是具有不同主题和更轻的功能的相同应用程序?