我是谷歌应用程序引擎的新手,想在上面托管我的php网站。我发现有一个error_handlers选项可以将错误(缺少页面)重定向到自定义错误页面,但在部署时,错误页面永远不会显示。
我已经使用dev_appserver.py app.yaml在本地服务器上尝试过了,并且工作正常。如果我输入一个不存在的文件,它将重定向到错误页面。但当部署到web上时,它就不起作用了。
这是我的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在本地服务器上,它工作正常,并显示错误页面。部署后,由于缺少php或html,将出现404错误。error.html永远不会显示,即使URL是(域).com/error.html。error.html将显示404错误
我想知道是否有可能将丢失的页面重定向到自定义错误页面。
发布于 2019-01-02 23:21:01
在您的app.yaml中,我认为您在- url: /(.+\.(php\html))$中遗漏了一个\,如下所示:/(.+\.(php\\html))$
error_handlers仅适用于超时、超出配额和dos api拒绝错误。
在我看来,您正在将所有url重定向到index.php,并在那里为每个url创建适当的处理程序。在这种情况下,您应该使用set_error_handler捕获那里的错误。
对于404,我将推荐以下几点:
handlers:
-url:/
script: index.php
-url:/*.
script: 404_custom_error.php在这种情况下,任何无法在index.php中处理的url都将由404自定义错误php脚本处理,如app.yaml example所示。
我发现有两个公开的问题跟踪者在讨论这个话题。第一个包含有关feature request的信息,第二个解释infrastructure will not intercept有效的404响应。
https://stackoverflow.com/questions/53946638
复制相似问题