0

我将文件上传到我的谷歌应用引擎实例,并成功连接到数据库并提取数据。但是,我试图通过将变量附加到 URL 来使用 GET 请求提取特定数据。我正在尝试调用 URL(为了安全起见,我的应用程序名称在此处更改)http://MYAPP.appspot.com/getCategories?catId=1并且我使用获取请求来获取最后附加的类别 ID。我相信问题出在我的 app.yaml 文件上,因为一切都默认为我在底部捕获的所有内容。但是,在我的本地实例上它工作得很好。如何更改我的 app.yaml 文件,以确保它触发第一个实例 /getCategories.php 而不是 index.php?我是否需要编写正则表达式来说明附加到末尾的数据?

#app.yaml
application: MYAPP
version: 1
runtime: php
api_version: 1

handlers:

- url: /getCategories.php
  script: /getCategories.php

- url: /.*
  script: index.php
4

2 回答 2

2

您要访问的 URL 是http://MYAPP.appspot.com/getCategories?catId=1. 但是没有处理程序getCategories。所以它总是转到默认处理程序index.php

根据您的 app.yaml,您的网址应该是http://MYAPP.appspot.com//getCategories.php?catId=1

或者,如果您需要您的网址,那么您应该修改 app.yaml 处理程序以

- url: /getCategories
  script: /getCategories.php
于 2015-03-16T05:13:11.947 回答
0

我同意 Nijin,但我还要补充:

虽然您只有一个处理程序来匹配您的索引(一个 catch all -url:/.* with script: index.php),但所有这一切都会捕获到任何页面的所有请求并将它们路由到索引文件(这很好作为后备或可用作错误捕获)。也就是说,Nijin 表示您需要一个 /getCategories.php 脚本的路由,这很好,但您最终会认为您编写的每一页都需要一个路由。更好的想法是创建一个 url/脚本处理程序,该处理程序在地址栏中捕获键入(或链接)的 url,并将其与 GAE 应服务的磁盘上的 php 文件匹配。catch all (-url:/.*) 应该在 app.yaml 中排在最后,这样您就不会错过任何内容,如果输入错误,则将它们路由回索引页面。因此:

handlers:
- url: /(.+\.php)$
  script: \1

- url: /.*
  script: index.php

希望这是有道理的!

干杯。

于 2015-09-14T11:33:17.583 回答