Ошибка 404 при загрузке подпапки в Google App Engine

У меня есть веб-сайт с index.html в качестве домашней страницы, который работает нормально, но я хочу создать структуру веб-сайта с подпапками, поэтому я создаю папку с именем "team", внутри команды я поместил файл index.html с информацией о команде. Когда я загружаю www.mysite.com/team/index.html, он работает нормально, но если я загружаю www.mysite.com/team, я получаю ошибку 404. Как я могу это исправить для автоматической загрузки index.html внутри подпапки?

Я использую Google App Engine в качестве сервера, загружаю файлы с помощью Google Engine App Launcher и использую некоторые фитон-файлы.

1 ответ

Решение

В тебе app.yaml, определите ваши статические обработчики файлов следующим образом:

…
handlers:
- url: /static
  static_dir: static
- url: /(.*?)/?
  static_files: \1/index.html
  upload: (.*?)/index.html
…

Обратите внимание, что поскольку вы определяете структуру своего сайта следующим образом, вы не сможете получить доступ к любому другому файлу, кроме index.html файлы. Например, если вы идете в /images/logo.pngApp Engine будет пытаться обслужить это из статического файла images/logo.png/index.html,

Чтобы решить эту проблему, вам нужно поместить все ваши статические файлы в другой подкаталог (/static в приведенном выше примере), и служить в качестве static_dir, Тогда вы должны ссылаться на ваши файлы из index.html файлы как /static/images/logo.png, так далее.

ОБНОВЛЕНИЕ: я вставлю ваш app.yaml здесь, потому что вы не можете правильно отформатировать его в комментарии:

handlers:
- url: /(.*\.(gif|png|jpg|ico|js|css|php|xml))
  static_files: \1
  upload: (.*\.(gif|png|jpg|ico|js|css|php|xml))

- url: /robots.txt
  static_files: robots.txt
  upload: robots.txt 

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

- url: .*
  script: main.py

- url: /static
  static_dir: static

- url: /(.*?)/?
  static_files: \1/index.html
  upload: (.*?)/index.html

Ваша проблема в том, что - url: .* директива ловит все, поэтому два нижних обработчика никогда не достигаются.

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

Другие вопросы по тегам