Как правильно отформатировать app.yaml для размещения веб-приложения Flutter с серверной частью PHP - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь создать файл .yaml для веб-приложения flutter с серверной частью php, но у меня возникают странные проблемы.

Приложение структурировано следующим образом:

Приложение flutter находится в Admin / web / и включает файлы различных типов, но не файлы php. Целевая страница - index. html.

Бэкэнд PHP находится в Admin /. Все файлы PHP должны быть из Admin /

Он в настоящее время загружает index. html, но по какой-то причине, когда я пытаюсь сделать website.com/manifest.json, я получаю index. html очередной раз. То же самое относится к FontManifest. json - он дает мне index. html.

Он действительно работает с каталогом веб-сайта root (website.com/), index. html и main.dart. js - соответствующие файлы передаются точно.

Вот мой .yaml файл:

service: admin
runtime: php72


handlers:

  - url: /(.+\.(ico|jpg|png|gif))$
    static_files: Admin/web/\1
    upload: Admin/web/(.+\.(ico|jpg|png|gif))$
    login: admin
    secure: always


  - url: /(.+\.(htm|html|css|js|json|map|ttf|dart))$
    static_files: Admin/web/\1
    upload: Admin/web/(.+\.(htm|html|css|js|json|map|ttf|dart))$
    login: admin
    secure: always


  - url: /(.+\.php)$
    static_files: Admin/\1
    upload: Admin\/(.+\.php)$
    login: admin
    secure: always

  - url: /(.*)$
    static_files: Admin/web/index.html
    upload: Admin/web/(.*)$
    login: admin
    secure: always

Я заметил, что страница сразу перенаправляется с website.com/ на website.com/#/, поэтому я также попробовал этот файл .yaml:

service: admin
runtime: php72

handlers:

  - url: /(.+\.(ico|jpg|png|gif))$
    static_files: Admin/web/\1
    upload: Admin/web/(.+\.(ico|jpg|png|gif))$
    login: admin
    secure: always

  - url: /#/(.+\.(ico|jpg|png|gif))$
    static_files: Admin/web/\1
    upload: Admin/web/(.+\.(ico|jpg|png|gif))$
    login: admin
    secure: always

  - url: /(.+\.(htm|html|css|js|json|map|ttf|dart))$
    static_files: Admin/web/\1
    upload: Admin/web/(.+\.(htm|html|css|js|json|map|ttf|dart))$
    login: admin
    secure: always

  - url: /#/(.+\.(htm|html|css|js|json|map|ttf|dart))$
    static_files: Admin/web/\1
    upload: Admin/web/(.+\.(htm|html|css|js|json|map|ttf|dart))$
    login: admin
    secure: always

  - url: /(.+\.php)$
    static_files: Admin/\1
    upload: Admin\/(.+\.php)$
    login: admin
    secure: always

  - url: /(.*)$
    static_files: Admin/web/index.html
    upload: Admin/web/(.*)$
    login: admin
    secure: always

Тем не менее, с этим файлом .yaml я получил те же результаты.

Изменить Я понял, что предыдущий файл .yaml даст те же результаты, что и исходный из-за порядка обработчиков, поэтому я попробовал следующее (и получил те же результаты):

service: admin
runtime: php72

handlers:

  - url: /#/(.+\.(ico|jpg|png|gif))$
    static_files: Admin/web/\1
    upload: Admin/web/(.+\.(ico|jpg|png|gif))$
    login: admin
    secure: always

  - url: /(.+\.(ico|jpg|png|gif))$
    static_files: Admin/web/\1
    upload: Admin/web/(.+\.(ico|jpg|png|gif))$
    login: admin
    secure: always

  - url: /#/(.+\.(htm|html|css|js|json|map|ttf|dart))$
    static_files: Admin/web/\1
    upload: Admin/web/(.+\.(htm|html|css|js|json|map|ttf|dart))$
    login: admin
    secure: always

  - url: /(.+\.(htm|html|css|js|json|map|ttf|dart))$
    static_files: Admin/web/\1
    upload: Admin/web/(.+\.(htm|html|css|js|json|map|ttf|dart))$
    login: admin
    secure: always

  - url: /(.+\.php)$
    static_files: Admin/\1
    upload: Admin\/(.+\.php)$
    login: admin
    secure: always

  - url: /(.*)$
    static_files: Admin/web/index.html
    upload: Admin/web/(.*)$
    login: admin
    secure: always

1 Ответ

0 голосов
/ 14 мая 2020

Edit

Причина, по-видимому, заключалась в том, что обработчику загрузки нужно только сохранить группу захвата расширения. Я не знаю, почему это так.

Итак, вот более правильный ответ, хотя я не понимаю причину этого.

service: admin
runtime: php72

entrypoint: serve Admin/front.php

handlers:

  - url: /(.+\.(ico|jpg|png|gif))$
    static_files: Admin/web/\1
    upload: Admin/web/.+\.(ico|jpg|png|gif)$
    login: admin
    secure: always

  - url: /(.+\.(htm|html|css|js|json|map|ttf|dart))$
    static_files: Admin/web/\1
    upload: Admin/web/.+\.(htm|html|css|js|json|map|ttf|dart)$
    login: admin
    secure: always

  - url: /
    static_files: Admin/web/index.html
    upload: Admin/web/index.html
    login: admin
    secure: always

- Старая версия -

Хорошо, поэтому секрет заключался в том, чтобы не заканчивать шаблоны URL $.

Вот рабочая страница:

service: admin
runtime: php72

entrypoint: serve Admin/front.php

handlers:

  - url: /(.+\.(ico|jpg|png|gif))
    static_files: Admin/web/\1
    upload: Admin/web/(.+\.(ico|jpg|png|gif))
    login: admin
    secure: always

  - url: /(.+\.(htm|html|css|js|json|map|ttf|dart))
    static_files: Admin/web/\1
    upload: Admin/web/(.+\.(htm|html|css|js|json|map|ttf|dart))
    login: admin
    secure: always

  - url: /
    static_files: Admin/web/index.html
    upload: Admin/web/index.html
    login: admin
    secure: always

Я использовал entrypoint: serve Admin/front.php для обслуживания php.

...