Страница обработчиков ошибок не отображается при развертывании - PullRequest
0 голосов
/ 27 декабря 2018

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

Я попытался с локальным сервером, используя dev_appserver.py app.yaml, и он работает.Если я введу файл, который не существует, он будет перенаправлен на страницу ошибки.Но при развертывании в Интернете это не работает.

Это мой app.yaml.Если URL-адрес не является файлом php или html, просто перенаправьте его на index.php.Но если это файл php или html, но он не найден, он перейдет в error.html.

runtime: php55
api_version: 1

handlers:
# Serve images as static resources.
- url: /(.+\.(gif|png|jpg))$
  static_files: \1
  upload: .+\.(gif|png|jpg)$
  application_readable: true

# Serve php scripts.
- url: /(.+\.(php\html))$
  script: \1

- url: /.*
  script: index.php

error_handlers:
  - file: error.html

На локальном сервере все работает нормально и показывает страницу с ошибкой.При развертывании появится ошибка 404 из-за отсутствия php или html.Error.html никогда не будет отображаться, даже если URL-адрес (домен) .com / error.html.Ошибка 404 будет отображаться для error.html

Интересно, можно ли перенаправить отсутствующую страницу на страницу пользовательской ошибки.

1 Ответ

0 голосов
/ 02 января 2019

В вашем app.yaml Я думаю, что вам не хватает \ в - url: /(.+\.(php\html))$, например: /(.+\.(php\\html))$

error_handlers работает только для тайм-аутов, сверх квоты,и dos api denial error.

Мне кажется, что вы перенаправляете все свои URL-адреса в index.php и создаете соответствующий обработчик для каждого URL-адреса.В этом случае вы должны отлавливать ошибки там с помощью set_error_handler .

Для 404 я рекомендую следующее:

handlers:
 -url:/
  script: index.php

 -url:/*.
  script: 404_custom_error.php

В этом случае любой URLкоторые не могут быть обработаны внутри index.php, будут обрабатываться сценарием php ошибки 404, как показано в примере app.yaml .

Я обнаружил два открытых трекера, обсуждающихЭта тема.Первый содержит информацию о запросе функции , а второй объясняет, что инфраструктура не будет перехватывать действительных 404 ответов.

...