Я работаю над приложением GAE, которое в основном состоит из статического контента. Я сконфигурировал следующие обработчики:Google App Engine пользовательская страница 404 для статических файлов
- url: /content/(.*\..*)
static_files: static/content/\1
upload: static/content/(.*)
- url: /content/(.+)
static_files: static/content/\1.html
upload: static/content/(.*)\.html
Первый обработчик используется для обслуживания изображений, таблиц стилей и т. Д .; второй обрабатывает простые URL-адреса, такие как /content/zoo/monkeys/george
, и обслуживает соответствующий HTML-файл.
В настоящий момент GAE возвращает пустую страницу, если для URL-адреса не существует соответствующего статического файла. Я бы хотел создать для этих случаев пользовательскую 404 страницу, но, видимо, это не просто.
Ответы на аналогичные вопросы, предложенные для размещения обработчика «уловки» в нижней части моего app.yaml
, с RequestHandler
, который генерирует страницу с ошибкой. Однако /content/(.+)
соответствует всем URL-адресам под /content/
, действительным или нет, что означает, что такой обработчик не будет вызван.
я могу думать только о двух других решениях:
- маршрут всех запросы через динамический обработчик, который выписывает контент для действительной URL, или страницы ошибки для недопустимых. Мне это не нравится, потому что он намного менее эффективен, чем позволить GAE обслуживать статические файлы.
- Объявите отдельный статический обработчик, который явно соответствует каждому статическому файлу, а затем помещает обработчик «catch-all» внизу - мне тоже это не нравится, потому что это приведет к длинному списку обработчиков ,
Есть ли другой способ создать надлежащую страницу 404 для этого случая?
Думаю, вы нарисовали себя в угол. Appengine не разработан с учетом этого использования. –