Ошибка 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.png
App 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
вместо имени файла. Предоставление имени файла скрипта не рекомендуется.