내 웹사이트를 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' 매개변수에 허용되는 유일한 값은 여기 [1]에 설명된 대로 'auto'입니다. 요청이 특정 경로에 도달할 때 스크립트를 실행하려면 인앱 라우팅이 포함된 웹 프레임워크(예: Laravel, Symfony 등)를 사용하는 것이 좋습니다.
[1]https://cloud.google.com/appengine/docs/standard/php7/php-differences#migating_your_appyaml_file
PHP 7.2 및 App Engine 표준 환경을 사용하는 경우 이 런타임은 베타 버전이며 이 기능은 이전 버전과 호환되지 않는 방식으로 변경될 수 있으며 SLA 또는 지원 중단 정책이 적용되지 않습니다.
이것을 시도해보고 결과를 알려주십시오.
[1]https://cloud.google.com/appengine/docs/standard/php7/config/appref