我的主要问题是,这是否可能。
我当前的实时应用是mylongnamedapp.com
我也拥有shortna.me
(例如)。
我想实现一个简短的网址链接功能来保存短信中的字符,所以我希望用户能够点击这样的链接http://shortna.me/a/f423f
现在,shortna.me
将解析为mylongnamedapp.com
,因此我可以执行以下任何操作:
a.php
的脚本,并让app.yaml'解码' http://shortna.me/a/f423f
使用a.php
?f423f
脚本
a
的文件夹,并让app.yaml在其中运行默认脚本并使用参数f423f
运行它?在Google App Engine上使用app.yaml可以实现上述任何一项吗?
答案 0 :(得分:0)
如果我正确理解了您的问题,您希望App Engine应用程序使用参数/a/some_value
将请求发送到a.php
到脚本some_value
。
这里有一个小工作示例,您将能够适应您的案例场景:
<强> 的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>
您将看到应用程序正在根据a.php
中的处理程序执行app.yaml
脚本,并将查询的结尾映射到可以使用的paremeter。
答案 1 :(得分:0)
有了@dsesto的回答,我将这一步骤更进一步,并且不再需要将该脚本放在/a
目录中。因此,我可以使用http://shortna.me/a/f423f
而不是http://shortna.me/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: \1
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
之类的特定页面。
第二个特定于注册,因为该网址很漂亮,并且在营销材料中未使用.php
。
第三个是这个问题的答案。
最后一个是将所有不匹配的请求发送到默认主页的功能。