私は自分のウェブサイトを Google App Engine にデプロイしました。ウェブサイトのサブディレクトリを開こうとしない限り、正常に動作しています。たとえば、ディレクトリをアップロード/デプロイしていても、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」パラメータに受け入れられる唯一の値は、ここ [1] で説明されているように「auto」です。リクエストが特定のルートに到達したときにスクリプトを実行するには、アプリ内ルーティングを備えた 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]参考: