【问题标题】:_ah/ URLs being passed into app via app.yaml_ah/ 通过 app.yaml 传递到应用程序的 URL
【发布时间】:2025-12-12 19:45:02
【问题描述】:

我已经在 App Engine 上安装了一个 CakePHP 应用程序,我在 app.yaml 中使用通配符 URL 将 URL 重定向到它:

  • 网址:/.* 脚本:app/webroot/index.php

文档指出 /_ah/* URL 将被忽略(我还不知道这些是做什么用的),但它们被我的 CakePHP 应用程序捕获并将错误抛出到错误日志中。我还怀疑这是导致 500 错误的原因,其中 appengine 错误为 204,并且一直随机发生。

有人对此有解决方案吗?如何确保 /_ah/ url 传递到应用程序引擎而不是我的特定应用程序代码?

示例错误:

E 08:51:48.957 2015-03-17 404 841 B 304ms /_ah/start 0.1.0.3 - - [17/Mar/2015:01:51:48 -0700] "GET /_ah/start HTTP/1.1" 404 841 - - "****.appspot.com" ms=304 cpu_ms=416 cpm_usd=0.000094 loading_request=1 实例=0 app_engine_release=1.9.18 E 08:51:48.854 错误:[MissingControllerException] 找不到控制器类 AhController。

MissingControllerException 是由我的应用程序引发的。

【问题讨论】:

  • 我很感兴趣,显然你不是自己提出这些要求的,所以你知道它们来自哪里吗?
  • 不知道,我已经用示例错误更新了原始消息。
  • 看看this
  • 这是你的框架的问题,而不是 GAE(它应该给你 404 响应而不是错误)。您应该能够定义这些 URL 以在实例启动/关闭时执行某些操作。
  • 是的,您可以添加url: /_ah/start(比url: /.* 更高的级别)和一个处理程序,以便在实例启动时执行一些工作或只返回一个空响应。不过,您提供的日志条目很奇怪,因为 /_ah/start 的 404 被认为是成功的,并且通常具有 info 日志级别。至于 500 + 204 组合,这在尝试写入本地文件系统的第三方框架中很常见。

标签: google-app-engine cakephp


【解决方案1】:

/_ah/start 的请求是来自 Appengine 本身的初始请求,用于初始化您的应用程序。我认为你可以忽略它,如果你不需要做任何特别的事情。或者返回空响应。

参见文档:https://cloud.google.com/appengine/docs/php/modules/#PHP_Instance_states

【讨论】:

    最近更新 更多