【问题标题】:Routing for Codeigniter site on Google App EngineGoogle App Engine 上 Codeigniter 站点的路由
【发布时间】:2019-11-22 19:51:32
【问题描述】:

我正在尝试将 Codeigniter 站点部署到 Googe App Engine PHP 7。该站点包含一个联系人表单插件,该插件位于 Application 文件夹之外的 data 文件夹中,如下所示:

Root
--application
--data
--css
--js
--system

当我从 Cloud Shell localhost 访问此页面时,它会完美加载:

https://8080-dot-1234567-dot-devshell.appspot.com/data/contact.php

但是在我将此站点部署到 Google App Engine 并尝试访问该页面后,它返回了 404 Not Found 错误:

https://mysite.appspot.com/data/contact.php

有人可以解释为什么页面在 localhost 上工作,但在部署到 Google App Engine 时却不行?

【问题讨论】:

  • 我没有使用 .htaccess 文件,因为 Google App Engine 不支持该文件。
  • 好的,删除评论
  • 我发现您的描述中项目 ID 之间的差异很有趣。在第一个上您使用了“devshell”,而在另一个上您使用了“mysite”。这可能表明您指的是不同的项目或服务,这意味着找不到文件或端点。

标签: php codeigniter google-app-engine routing


【解决方案1】:

app.yaml 文件的位置在这种情况下至关重要:该文件所在的目录被视为您的应用程序的顶层。这有两个主要含义:

  • 应用程序所需的所有工件都必须位于此应用程序顶级目录内的某个位置,应用程序部署过程不会在它之外查看。我怀疑这是你的情况——如果你的app.yaml 文件在application 目录内,而data 目录在它之外。 可能可以通过将必要的工件/目录从顶级目录外部符号链接到其内部来解决此问题(请参阅How to upload a Google App Engine (Go) project in a different folder than the app.yaml),但这不适用于所有运行时。
  • 访问应用中工件的路径需要相对于应用顶级目录。

某些运行时的开发服务器包括对这些检查(使您的应用程序的行为更接近其在 GAE 上部署时的行为),但并非所有运行时都具有此功能(有些甚至没有专用的开发服务器),留下实际应用和开发应用之间存在这种差异的空间。

注意:这里所说的“应用程序”实际上是一个 GAE 服务/模块(在单服务应用程序的情况下它们是相同的)。但是对于具有多个服务的 GAE 应用程序,所有这些考虑因素都需要应用于每个应用程序服务。可能对这种情况感兴趣:Can a default service/module in a Google App Engine app be a sibling of a non-default one in terms of folder structure?

【讨论】:

    猜你喜欢
    • 2012-11-15
    • 2015-06-06
    • 2023-03-20
    • 1970-01-01
    • 2020-01-22
    • 2019-12-03
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    相关资源
    最近更新 更多