【发布时间】: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 组合,这在尝试写入本地文件系统的第三方框架中很常见。