【发布时间】:2018-08-17 20:53:32
【问题描述】:
我正在努力在我的app.yaml 文件的handlers 部分为我的标准引擎php 应用程序设置URL 处理程序。
以下代码使mydomain.com/abc.php 和mydomain.com 在我的dist 文件夹中显示abc.php 文件:
handlers:
- url: /(abc\.php)
script: dist/abc.php
- url: /(.*)
script: dist/abc.php
但是,我不想要一个 catch all 处理程序,所以我删除了它,所以只存在 1 个处理程序:
handlers:
- url: /(abc\.php)
script: dist/abc.php
现在当我转到 mydomain.com/abc.php 时,我收到 500 错误:
如何在不对所有 URL 使用处理程序的情况下使目标 URL 在 GAE 上工作?
【问题讨论】:
-
您在日志中看到的错误是什么?
-
我查看了 StackDriver Logging 但我只能看到对 /_ah/start + 一些 createVersion 日志的请求 - 没有关于 php 错误的详细信息。关于如何查看 PHP 错误的任何建议?
-
来自the docs,它说模式是从上到下评估的。您最初有 URL 模式 A 和 URL 模式 B。当只有 A 时,它不起作用。我会说您的请求是通过模式 B 处理的; A 失败,他们转移到 B。我还不确定为什么......从以前的文档中,你缺少
$,end anchor -
我创建了 2 个单独的项目以确保旧的处理程序不会被重用/缓存,所以我认为这不是问题所在。我已经按照您的建议设置了第三个项目:
handlers:- url: /abc.php$script: dist/abc.php这也会导致与以前相同的 500 错误。 -
我拿了simplest code 并复制了你的处理程序。它有效。此外,如果我没有捕获所有处理程序,当我点击错误的 URL 时,我会得到 404(不是 5XX)。我能想到的一个区别是我缺少的自定义域。此外,关于日志,您应该能够同时看到
activity和request_log。如果未记录任何请求,则意味着请求未解决并定向到您的应用程序。尝试不使用自定义域,以消除一个因素。
标签: google-app-engine handler app.yaml google-app-engine-php