【发布时间】:2018-08-31 19:02:25
【问题描述】:
我对如何设置 app.yaml 以完成我的工作感到有些困惑。以前,我在其他地方运行相同的 codeigniter 应用程序,/support 子目录为自定义 php 支持台应用程序提供服务。它没有问题。好的 ol' apache 服务它没有任何问题。
现在我想在 GAE 上做同样的事情!这是我的 app.yaml
application: <NAME>
version: 1
runtime: php55
api_version: 1
threadsafe: yes
handlers:
- url: /assets
static_dir: assets
- url: /favicon\.ico
static_files: favicon.ico
upload: favicon\.ico
- url: /support/.*
script: index.php
- url: /.*
script: index.php
secure: always
只是为了确保在有人为我提供解决方案后我能正确路由所有文件。这是支持台的目录结构(称为 hesk)-
我需要一个带有通配符的解决方案,以便/support 可以完美地处理子文件夹和所有内容.. 还需要定义静态文件。正如你所看到的,它们散落在各处.. 一点也不方便,但就是这样!我不擅长正则表达式。所以请怜悯我。
更新: 我添加了一点更新的 app.yaml .. 现在支持根目录和 1 级子目录中的所有 php 脚本都可以工作
- url: /support/(.*)/(.*)\.php$
script: support/\1/\2.php
- url: /support/(.*)\.php$
script: support/\1.php
但问题是这个东西有很多子文件夹。请参阅 support/inc 文件夹下方的此快照。如何处理?我是否必须为所有可能的子目录级别手动放置一个 url-script 对?这太令人沮丧了!
【问题讨论】:
-
再次,您的嵌套错误。 URL 是相对于
app.yaml文件的,因此不要在脚本路径中包含support/。正则表达式通配符方法为您处理所有嵌套。只需在答案中使用:- url: /(.+)\.php script: \1.php。 -
等等!所以您编辑了问题并将您的
app.yaml移动到某个地方?现在在哪里? -
对于从
/support/.. 运行的应用程序没有单独的 app.yaml。你看到的是一个很长的故事。 app.yaml 是它应该在的地方!在/ -
老兄一定有一些误解.. 我的 codeigniter 应用程序位于
/并且名为“Hesk”的自定义基于 php 的支持台运行在/support/ -
/(.+)\.php script: \1.php只会处理直接调用的位于/的php 脚本,它也不会将/映射到/index.php
标签: php codeigniter google-app-engine google-cloud-platform google-app-engine-php