GAE app.yaml - 从自定义短 URL 获取脚本和参数?

GAE app.yaml - get script and parameter from custom short URL?

我的主要问题是,这是否可能。

我目前的在线申请是mylongnamedapp.com

我也拥有shortna.me(例如)。

我想实现一个简短的 url link 功能来保存 SMS 消息中的字符,所以我希望能够让用户像这样单击 link http://shortna.me/a/f423f

现在,shortna.me 将解析为 mylongnamedapp.com,所以我可以执行以下任一操作:

  1. 有一个名为 a.php 的脚本,并且有 app.yaml 'decode' http://shortna.me/a/f423f 脚本 a.php 参数为 f423f?
  2. 有一个名为 a 的文件夹,其中有 app.yaml 运行 个默认脚本,运行 它带有参数 f423f?

在 Google App Engine 上使用 app.yaml 是否可以实现上述任何一个?

如果我正确理解了您的问题,您希望 App Engine 应用程序使用参数 some_value.

将对 /a/some_value 的请求路由到脚本 a.php

这里有一个小的工作示例,您可以根据自己的情况进行调整:

app.yaml

runtime: php55
api_version: 1

handlers:
- url: /a/.*
  script: a.php

a.php

<html>
  <body>
    <?php
    $str = $_SERVER[PATH_INFO];
    $str2 = explode("/",$str)[2]; 

    echo "This function is using the parameter: " . $str2;
    ?>
  </body>
</html>

然后你可以用命令执行这段代码:

dev_appserver.py app.yaml --php_executable_path <PATH_TO_PHP-CGI>

您将看到应用程序正在根据 app.yaml 中的处理程序执行 a.php 脚本,并将查询的结尾映射到要使用的参数。

根据@dsesto 的回答,我更进一步,不再需要将脚本放在 /a 目录中。所以我可以使用 http://shortna.me/f423f.

而不是 http://shortna.me/a/f423f

我的新方向是使用 6 个字符的字母数字代码。因为 app.yaml 使用正则表达式,所以这就是我所做的:

- url: /[a-zA-Z\d]{6}
  script: a.php
  secure: always

因此,任何匹配正则表达式 [a-zA-Z\d]{6} 的内容都将发送到 a.php。但我确实有一个 mylongnamedapp.com/signup 的处理程序('signup' 是 6 个字符)——只要该处理程序位于此正则表达式之上,它就可以工作。所以完整的结果是这样的:

- url: /(.+\.php)$
  script: 
  secure: always

- url: /signup
  script: signup.php
  secure: always

- url: /[a-zA-Z\d]{6}
  script: test.php
  secure: always

- url: /.*
  script: home.php
  secure: always

第一个处理程序负责处理特定页面,例如 login.php

第二个是特定于注册的,因为 URL 很漂亮并且没有在营销中使用 .php material。

第三个是本题的答案

最后一个是将不匹配的请求发送到默认主页的包罗万象。