Google App Engine: добавляемая маршрутизация. html - PullRequest
0 голосов
/ 19 июня 2020

Я развертываю приложение React в Google App Engine. В настоящее время мне нужно добавить .html или /index.html к запросам, но я бы хотел избежать этого, поэтому у меня есть чистые маршруты.

Например, я могу загрузить mywebsite.com/docs/page1.html и mywebsite.com/docs/page1/index.html, но я хочу загрузить mywebsite.com/docs/page1. Приложение React фактически создает обе эти повторяющиеся страницы, поэтому похоже, что это поведение по умолчанию. Маршрутизация так "ломается" только при сборке, она отлично работает на сервере разработки.

Структура каталогов

- build/my_docs/
  - css/
  - img/
  - js/
  - docs/
    - page1.html
    - page1/
      - index.html

app.yaml

runtime: python3
service: docs

handlers:
  - url: /
    secure: always
    redirect_http_response_code: 301
    static_files: build/my_docs/index.html
    upload: build/my_docs/index.html
  - url: /css/(.*)
    static_files: build/my_docs/css/\1
    upload: build/my_docs/css/(.*)
  - url: /img/(.*)
    static_files: build/my_docs/img/\1
    upload: build/my_docs/img/(.*)
  - url: /js/(.*)
    static_files: build/my_docs/s/\1
    upload: build/my_docs/js/(.*)
  - url: /(.*\.(json|ico|xml))$
    static_files: build/my_docs/\1
    upload: build/my_docs/.*\.(json|ico|xml)$
  - url: /docs/(.*)
    static_files: build/my_docs/docs/\1
    upload: build/my_docs/docs/(.*).html
    # Trying to append .html to non css/img/js requests but it doesn't work!

Я также попытался развернуть образец проекта Docusaurus в GAE без обработчиков app.yaml, и я вижу ту же нежелательную маршрутизацию (необходимо добавить .html).

1 Ответ

0 голосов
/ 19 июня 2020

Удовлетворены ли вы обслуживанием этих html файлов как stati c документов, или они должны быть шаблонами, в которые вы можете передавать контент?

Во-первых, в вашем обработчике / нет такой файл build/my_docs/index.html

Ваш обработчик /docs/(.*) в порядке. Вы говорите, что это работает в dev, но не в сборке? Это похоже на проблему маршрутизации внутри React. Проверьте свою маршрутизацию React. Кроме того, убедитесь, что вы часто сбрасываете кеш браузера, так как вы можете кешировать старый код React.

** EDIT **

Давайте посмотрим на этот обработчик:

- url: /docs/(.*)
    static_files: build/my_docs/docs/\1
    upload: build/my_docs/docs/(.*).html

Если вы запросите по URL /docs/page1, он попытается загрузить файл stati c из каталога build/my_docs/docs/page1. Пока все в порядке, поскольку этот каталог существует.

Проблема описана в следующей строке. Вы просите обслуживать stati c файл build/my_docs/docs/page1.html, которого нет в указанном каталоге. Попробуйте один из следующих вариантов:

 - url: /docs/(.*)
    static_files: build/my_docs/docs/\1
    upload: build/my_docs/docs/(.*)/index.html

или:

 - url: /docs/(.*)
    static_files: build/my_docs/docs
    upload: build/my_docs/docs/(.*).html

Другими словами, существует несоответствие между указанным вами каталогом static_files и местоположением файла, который вы пытается служить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...