2016-05-06 1 views
2

Я работаю над приложением 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/, действительным или нет, что означает, что такой обработчик не будет вызван.

я могу думать только о двух других решениях:

  1. маршрут всех запросы через динамический обработчик, который выписывает контент для действительной URL, или страницы ошибки для недопустимых. Мне это не нравится, потому что он намного менее эффективен, чем позволить GAE обслуживать статические файлы.
  2. Объявите отдельный статический обработчик, который явно соответствует каждому статическому файлу, а затем помещает обработчик «catch-all» внизу - мне тоже это не нравится, потому что это приведет к длинному списку обработчиков ,

Есть ли другой способ создать надлежащую страницу 404 для этого случая?

+0

Думаю, вы нарисовали себя в угол. Appengine не разработан с учетом этого использования. –

ответ

-1

Попробуйте «error_handlers».

error_handlers: 
- file: custom_404.html 

От GAE App.yaml documentation - Каждая запись файла указывает на статический файл, который должен быть подан в месте общего ответа с кодом ошибки. Если вы укажете элемент файла без соответствующего элемента error_code, статический файл станет страницей ошибок по умолчанию для вашего приложения.

+2

'error_handlers' не работает для 404. –

Смежные вопросы