Перенаправьте все URL домена в index.html для развернутого веб-сайта механизма приложений Flex. - PullRequest
0 голосов
/ 04 июля 2018

Я начинаю создавать свой продукт сегодня. Я следовал некоторым учебникам в Интернете, в которых рассказывается, как развернуть статический веб-сайт в Google App Engine. И он успешно развернут.

Тем не менее, когда я попытался настроить URL-адреса для index.html, файл index.html был поврежден, непосредственно указывая на местоположение index.html.

Мой успешный сайт: Ссылка здесь Prove image

Сбой ситуации: Ссылка здесь Prove image

Мой файл app.yaml: App.yaml

Различие между двумя ситуациями - это только последний символ "/" в URL. Я понятия не имею, почему index.html сломается с "/". Обработчик перенаправления должен перенаправлять в то же местоположение файла ...


Обновление:

После многих испытаний. Я обнаружил, что проблема заключается в среде выполнения в app.yaml. Мой сайт отлично работает, когда env: flex. И он ломается, когда env: (что-нибудь статическое, кроме flex) Итак, я могу пойти двумя путями:

  1. использовать flex env. но я не знаю, как перенаправить в index.html, так как я обнаружил, что -handlers не работает в flex env после моей попытки.

  2. Сохраняйте статическую среду для удобного маршрута. Но проблема в том, как сделать так, чтобы сайт работал хорошо.

Пожалуйста, помогите ...


2-е обновление

После перестроения и развертывания все. Мой сайт сейчас работает. Однако он работает только на https://koki -6hats.appspot.com / index.html

Для других случаев, таких как:

https://koki -6hats.appspot.com / индекс

https://koki -6hats.appspot.com /

https://koki -6hats.appspot.com / shouldGoToIndex.html

не работает. Как я могу настроить правило маршрутизации, чтобы обеспечить автоматическое перенаправление всех ссылок выше на index.html?


3-е обновление

Спасибо, что Алекс и GAEfans ответили на мой вопрос!

Это мой текущий app.yaml:

runtime: python27
api_version: 1
threadsafe: true

default_expiration: "3m"

handlers:

- url: /(.*\.(appcache|manifest))
  mime_type: text/cache-manifest
  static_files: static/\1
  upload: static/(.*\.(appcache|manifest))

- url: /(.*\.atom)
  mime_type: application/atom+xml
  static_files: static/\1
  upload: static/(.*\.atom)

- url: /(.*\.crx)
  mime_type: application/x-chrome-extension
  static_files: static/\1
  upload: static/(.*\.crx)

- url: /(.*\.css)
  mime_type: text/css
  static_files: static/\1
  upload: static/(.*\.css)

- url: /(.*\.eot)
  mime_type: application/vnd.ms-fontobject
  static_files: static/\1
  upload: static/(.*\.eot)

- url: /(.*\.htc)
  mime_type: text/x-component
  static_files: static/\1
  upload: static/(.*\.htc)

- url: /(.*\.html)
  mime_type: text/html
  static_files: static/\1
  upload: static/(.*\.html)

- url: /(.*\.ico)
  mime_type: image/x-icon
  static_files: static/\1
  upload: static/(.*\.ico)

- url: /(.*\.js)
  mime_type: text/javascript
  static_files: static/\1
  upload: static/(.*\.js)

- url: /(.*\.json)
  mime_type: application/json
  static_files: static/\1
  upload: static/(.*\.json)

- url: /(.*\.m4v)
  mime_type: video/m4v
  static_files: static/\1
  upload: static/(.*\.m4v)

- url: /(.*\.mp4)
  mime_type: video/mp4
  static_files: static/\1
  upload: static/(.*\.mp4)

- url: /(.*\.(ogg|oga))
  mime_type: audio/ogg
  static_files: static/\1
  upload: static/(.*\.(ogg|oga))

- url: /(.*\.ogv)
  mime_type: video/ogg
  static_files: static/\1
  upload: static/(.*\.ogv)

- url: /(.*\.otf)
  mime_type: font/opentype
  static_files: static/\1
  upload: static/(.*\.otf)

- url: /(.*\.rss)
  mime_type: application/rss+xml
  static_files: static/\1
  upload: static/(.*\.rss)

- url: /(.*\.safariextz)
  mime_type: application/octet-stream
  static_files: static/\1
  upload: static/(.*\.safariextz)

- url: /(.*\.(svg|svgz))
  mime_type: images/svg+xml
  static_files: static/\1
  upload: static/(.*\.(svg|svgz))

- url: /(.*\.swf)
  mime_type: application/x-shockwave-flash
  static_files: static/\1
  upload: static/(.*\.swf)

- url: /(.*\.ttf)
  mime_type: font/truetype
  static_files: static/\1
  upload: static/(.*\.ttf)

- url: /(.*\.txt)
  mime_type: text/plain
  static_files: static/\1
  upload: static/(.*\.txt)

- url: /(.*\.unity3d)
  mime_type: application/vnd.unity
  static_files: static/\1
  upload: static/(.*\.unity3d)

- url: /(.*\.webm)
  mime_type: video/webm
  static_files: static/\1
  upload: static/(.*\.webm)

- url: /(.*\.webp)
  mime_type: image/webp
  static_files: static/\1
  upload: static/(.*\.webp)

- url: /(.*\.woff)
  mime_type: application/x-font-woff
  static_files: static/\1
  upload: static/(.*\.woff)

- url: /(.*\.xml)
  mime_type: application/xml
  static_files: static/\1
  upload: static/(.*\.xml)

- url: /(.*\.xpi)
  mime_type: application/x-xpinstall
  static_files: static/\1
  upload: static/(.*\.xpi)

# image files
- url: /(.*\.(bmp|gif|ico|jpeg|jpg|png))
  static_files: static/\1
  upload: static/(.*\.(bmp|gif|ico|jpeg|jpg|png))

# audio files
- url: /(.*\.(mid|midi|mp3|wav))
  static_files: static/\1
  upload: static/(.*\.(mid|midi|mp3|wav))  

# windows files
- url: /(.*\.(doc|exe|ppt|rtf|xls))
  static_files: static/\1
  upload: static/(.*\.(doc|exe|ppt|rtf|xls))

# compressed files
- url: /(.*\.(bz2|gz|rar|tar|tgz|zip))
  static_files: static/\1
  upload: static/(.*\.(bz2|gz|rar|tar|tgz|zip))

# index files
- url: /(.*)
  static_files: static/index.html
  upload: static/index.html

# site root
- url: /
  static_files: static/index.html
  upload: static/index.html

И это моя структура папок:

.root
  - app.yaml
  - static
    - index.html
    - favicon.ico
    - styles.html
    - php
      - sendMail.php
    - css
      - ...
    - js
      - ...
    - fonts
      - ...
    - image
      - ...

В этой сборке исправлена ​​вторая проблема с обновлениями! Тем не менее,

Для других случаев, таких как:

https://koki -6hats.appspot.com / индекс /

https://koki -6hats.appspot.com / индекс / index.html

все еще не работает.


Мой конечный результат - например:

Структура папок:

.root
  - app.yaml
  - static
    - index.html
    - favicon.ico
    - styles.html
    - php
      - sendMail.php
    - css
      - ...
    - js
      - ...
    - fonts
      - ...
    - image
      - ...
    - folderA
      - index.html
      - css, js, etc...
    - folderB
      - index.html
      - css, js, etc...

Url Отношения:

  1. URL: http://domain/folderA/(anything_and_level_behind), Вывод: Показать папку A index.html
  2. URL: http://domain/folderB/(anything_and_level_behind), вывод: Показать index.html папки * B
  3. URL: http://domain/other_folder_have_no_index_html_inside/, вывод: Показать index.html
  4. URL: http://domain/anything(no_/_AtLast), output: Показать index.html статического файла
  5. URL: http://domain/anything/anything/anything/(and_so_on...),, который 'что-нибудь' не является 'папкой A' / 'папкой B', вывод: Показать static.html
  6. Показывать index.html статического файла, если он не совпадает с вышеприведенными случаями

Последнее обновление

Спасибо за помощь Alex & GAEfans снова.

Теперь перенаправление работает отлично. Но он показывает некоторые предупреждения в консоли развернутой версии. Warnings

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Как бы обработчик URL мог когда-либо пройти строку 17? (.*) означает «ноль или более символов». Это означает, что ВСЕ, что введено, идет к index.html

Закомментированные строки ближе к тому, что вы хотите:

- url: /   # first test for root url
  static_files: 6Hats/index.html
  upload: 6Hats/index.html

- url: /(.*)   #everything else ends up here
  static_files: 6Hats/\1
  upload: 6Hats/(.*)

UPDATE

Я бы положил все ваши каталоги статических файлов в папку static. Тогда используйте:

- url: /static
  static_dir: 6Hats/static

- url: /favicon.ico
  static_files: 6Hats/favicon.ico
  upload: 6Hats/favicon.ico

- url: /.*   #everything else after slash ends up here
  static_files: 6Hats/index.html
  upload: 6Hats/index.html

Измените ваши URL для статических файлов на формат: /static/js/filename.js, /static/css/filename.css и т. Д.

Если вы ведете со всеобщим указанием на index.html, это означает, что все ваши вызовы ваших статических файлов (images, js, css) также будут вызывать index.html. Конечно, это беспорядок.

ОБНОВЛЕНИЕ 2:

Если вы используете:

- url: .*   #everything else ends up here
  static_files: 6Hats/index.html
  upload: 6Hats/index.html

(без косой черты), все остальное должно попасться туда.

0 голосов
/ 04 июля 2018

Проблема в том, что движок приложения теперь возвращает index.html для каждого запроса

Например, если вы перейдете сюда: https://kokitang.com/6Hats/main.css вы увидите, что он все еще возвращает index.html

Это строка 17 в вашем app.yaml

Редактировать

Хорошо, я думаю, что понимаю, что вы пытаетесь сделать сейчас.

Основная проблема, связанная с маршрутом каждой ссылки на index.html, заключается в том, что существуют другие файлы, которые необходимо загрузить, например main.css, main.js и т. Д.

Так что вам просто нужно установить для них специальное правило

handlers:

# images, css, js, etc
- url: /(.*\.(css|js|gif|png|jpg|jpeg))
  static_files: 6Hats/\1

# all other links load index.html
- url:/(.*)$
  static_files: 6Hats/index.html

2-е редактирование

Вам необходимо изменить ссылки на ресурсы на абсолютные, а не относительные

enter image description here

<link rel="stylesheet" href="css/base.css">

должно быть

<link rel="stylesheet" href="/css/base.css">

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