我在 Google 应用引擎上部署了我的网站,除非我尝试打开网站的子目录,否则它运行良好。例如,即使我已上传/部署目录,打开 example.com/dir 也会出现 404 错误。我的 app.yaml 如下:
runtime: php72
handlers:
- url: /
static_files: public/index.html
upload: public/index.html
- url: /
static_dir: public
# Serve images as static resources.
- url: /(.+\.(gif|png|jpg))$
static_files: \1
upload: .+\.(gif|png|jpg)$
application_readable: true
# Serve php scripts.
- url: /(.+\.php)$
script: \1
如果您需要任何其他详细信息,请告诉我。
答案1
我不知道这是否是将代码添加到 serverfault 时出现的复制粘贴错误,但您的 YAML 上的缩进不正确,这可能会导致此错误。应该是:
runtime: php72
handlers:
- url: /
static_files: public/index.html
upload: public/index.html
- url: /
static_dir: public
# Serve images as static resources.
- url: /(.+\.(gif|png|jpg))$
static_files: \1
upload: .+\.(gif|png|jpg)$
application_readable: true
# Serve php scripts.
- url: /(.+\.php)$
script: \1
答案2
App Engine 标准环境中 PHPv7.2 运行时中“script”参数唯一可接受的值是“auto”,如此处所述 [1]。建议使用具有应用内路由的 Web 框架(如 Laravel、Symfony 或类似框架)在请求到达特定路由时执行脚本。
[1]https://cloud.google.com/appengine/docs/standard/php7/php-differences#migrating_your_appyaml_file
请记住,如果您使用的是 PHP 7.2 和 App Engine 标准环境,则此运行时处于测试阶段,并且此功能可能会以向后不兼容的方式更改,并且不受任何 SLA 或弃用政策的约束。
请尝试一下并告诉我结果。
[1]https://cloud.google.com/appengine/docs/standard/php7/config/appref