【问题标题】:How to add custom error page for 404 error (page not found)如何为 404 错误添加自定义错误页面(找不到页面)
【发布时间】:2019-11-28 07:40:00
【问题描述】:

我正在尝试在我的网站中为“找不到页面”添加自定义 404 错误页面或输入错误的 URL。我有 app.yaml 文件并使用 Go 语言。我的网站基本上在 Google App Engine 中。我检查了每一个我认为与堆栈溢出问题有关的示例。但在一些例子中,他们用 Python 或 Java 语言解释了例子,但我想用 Go 语言找到。因为我的代码是用 Go 编写的。

静态错误 404 页面已加载到服务器中,但是当我填写错误的 URL 时,它会显示错误页面未找到而不是我的自定义页面。我附上了屏幕截图,告诉你一切。

当前:- https://imgur.com/a/sGrSPyO "这就是当前显示的内容"

必填:- https://imgur.com/a/TxL7NMR“这就是我想要的”

我已阅读 google app engine 的 app.yaml 文档并尝试放置错误处理程序,但我没有找到任何解决方案。

app.yaml 文件代码

runtime: go
api_version: go1

handlers:

-url: /

  static_files: www/index.html

  upload: www/index.html

-url: /(.*)

  static_files: www/\1

  upload: www/(.*)

error_handlers: 

  -file: www/page-not-found.html* 

这是更新后的 app.yaml 文件:

runtime: go

api_version: go1

error_handlers: 
  - file: /page-not-found.html

handlers:
- url: /
  static_files: www/index.html
  upload: www/index.html
- url: /(.*)
  static_files: www/\1
  upload: www/(.*)

【问题讨论】:

    标签: google-app-engine go http-status-code-404 custom-error-pages web-site-project


    【解决方案1】:

    Go 应用程序的app.yaml 配置文件的文档可以在app.yaml Configuration File 找到。

    在该页面上搜索error_handlers 以查看应如何定义。它有以下红色警告:

    警告:确保错误响应文件的路径不与静态文件处理程序路径重叠。

    您指定:

    -file: www/page-not-found.html*
    

    这与您的静态处理程序路径之一重叠:

    -url: /(.*)
     static_files: www/\1
     upload: www/(.*)
    

    这就是您的自定义错误页面没有得到服务的原因。您必须将错误处理程序放在 www 文件夹之外(或者不要将整个 www 文件夹用作静态处理程序路径,重要的是它们不能重叠)。

    注意:我链接到了 Go 1.12 应用配置,因为您使用的 Go 1.9 已经过时,很快就会变得不可用。尽管如此,这同样适用于关于自定义错误页面的两个版本。

    【讨论】:

    • @SaurabhTripathi 请发布您的“改进”版本。
    • icza .这是改进的版本.. 我已经从 www 文件夹中删除了 page-not-found.html。并从 app.yaml 文件中编辑标签。但仍然没有找到解决方案。运行时:go api_version:go1 error_handlers:-文件:/page-not-found.html 处理程序:-url:/static_files:www/index.html 上传:www/index.html -url:/(。*)static_files:www /\1 上传:www/(.*)
    • @SaurabhTripathi 请编辑您的问题,并“附加”您的新app.yaml 以及其他详细信息。很难从 cmets 中读取它。
    • @icza 你确定error_handlers 可以用于 404 响应吗?即gae遇到404时是否执行error_handlers?我已经看到 cmets 表明这是不可能的,并且答案通常建议在代码而不是配置中实现自定义 404...开发人员期望的方式是另一回事......然后有这样的回购......
    • @mkopriva 不,如果它可以用来覆盖 404 响应,我还没有尝试过...
    猜你喜欢
    • 2016-04-25
    • 2013-09-16
    • 2015-06-22
    • 2011-03-25
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 2021-11-18
    相关资源
    最近更新 更多