如何为404错误添加自定义错误页面(找不到页面)

时间:2019-07-19 10:16:25

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

我正在尝试在我的网站中为“找不到页面”添加自定义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/(.*)

1 个答案:

答案 0 :(得分:0)

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

在该页面上搜索error_handlers,以了解应如何定义。它具有以下红色警告:

  

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

您指定了:

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

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

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

这就是为什么不提供您的自定义错误页面的原因。您必须将错误处理程序放置在www文件夹之外(或不要将整个www文件夹用作静态处理程序路径,重要的是它们不能重叠)。

注意:我已链接到Go 1.12应用程序配置,因为您使用的Go 1.9已废弃,很快将不可用。尽管如此,关于自定义错误页面的两个版本都相同。