サブディレクトリページの 404 エラー

サブディレクトリページの 404 エラー

私は自分のウェブサイトを 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]参考:

関連情報