Я развернул свой сайт на 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
Единственным допустимым значением параметра "script" в среде выполнения PHPv7.2 для стандартной среды App Engine является "auto", как описано здесь [1]. Предлагается использовать веб-фреймворк (такой как Laravel, Symfony или аналогичный) с маршрутизацией внутри приложения для выполнения скрипта, когда запрос попадает на определенный маршрут.
[1]https://cloud.google.com/appengine/docs/standard/php7/php-differences#migrating_your_appyaml_file
Помните, что если вы используете PHP 7.2 и стандартную среду App Engine, эта среда выполнения находится в стадии бета-тестирования, и эта функция может быть изменена способами, несовместимыми с предыдущей версией, и не подпадает под действие какого-либо соглашения об уровне обслуживания или политики устаревания.
Пожалуйста, попробуйте это и сообщите мне о результатах.
[1]https://cloud.google.com/appengine/docs/standard/php7/config/appref