自定义 404 页面 - 现有插件?

It seems that you need to develop a plugin to customize the 404 page.

Does anyone have an example of a plug-in that does that?

We’d love to (radically) change the 404 page, would be a shame if we’d develop a plugin if other have done so before :slight_smile:

6 个赞

Bump! I’d like to hide some of the existing widgets and show a New Topic button.

I see that the 404 page title can be set via Settings > Customize > Text Content > [search for current 404 error text that is displayed] but more options would be nice!

1 个赞

Hello,

I am looking to personalize my 404 page due to the IPB to Discourse migration.
I would like to have a simple page with text.

What is the best option?

Thank you

1 个赞

有人解决了吗?404 模板是由 Ruby 处理的,而不是 JS,这很奇怪。有没有办法创建自定义的 404 hbs 模板并通过主题进行样式设置?

1 个赞

我也在寻找自定义 404 页面的方法。我遇到的一个问题是,论坛的某些版块是私密的。因此,当我在聊天中或从其他帖子链接到这些版块时,如果用户未登录,对他们来说这就像我链接到了一个不存在的页面。用户通常不太愿意深入思考,所以我认为很多人会忽略“或为私密”这一部分,因为页面看起来就是不存在。我希望实现的效果是:如果用户未登录且访问的是 404 页面,则在 404 页面顶部显示注册或登录表单(不进行重定向,因为这可能会让搜索引擎感到困惑)。如果用户已登录但没有访问权限,则显示常规的 404 页面。有人知道是否有办法实现这一点吗?

在您的站点设置中启用增强型但会泄露保密信息的 404 页面。

页面看起来应该有所不同吗?我刚刚在两个网站上试了一下,看到的仍然是看似相同的错误页面:

为了确保不是缓存问题,我在其中一个网站上重新构建了论坛,并尝试访问私密主题和未找到的页面。

我的设置如下所示:

2 个赞

你链接到的是哪些“版块”?是链接到某个特定主题吗?

1 个赞

是的,我在未登录状态下尝试加载特定主题、帖子、分类以及不存在的页面时,看到的都是同一个页面。

1 个赞

让我看看。这是我自托管的 Discourse 中 Staff 分类下的一个主题:

https://discourse.codinghorror.com/t/test-topic-for-close-states/3516

当我以 detailed 404 设为 false(默认值)加载它时,我看到:

哎呀!该页面不存在或为私密页面。

这符合我的预期。然而,当我将 detailed 404 改为 true 时,看到的却是同样的内容……@sam,我们是否在这里出现了回归,还是我对该功能的理解有误?:thinking:

我甚至重新构建了一次以防万一,但结果依然相同。我认为在启用 detailed 404 时,我期望看到的是:

抱歉,您无权访问此主题。

4 个赞

我认为你看到的这条消息是正确的,因为 Staff 最终是一个私密分类,但我可能错了。

不,这里的想法是,你通过 detailed 404 有意泄露信息。该主题确实存在,但由于某种原因你无法访问它。

3 个赞

我认为 @dan 参与了这个功能,也许 Dan 你对发生了什么有些想法?

3 个赞

只有当用户可以执行某些操作以查看群组(例如自由加入群组或发送加入申请)时,才会显示详细的 #404 错误消息。

在这种情况下,用户无法加入 @staff 群组或向其发送加入申请,这就是为什么未显示详细错误页面的原因。我考虑在启用“详细 404”时添加一个“else”情况,以显示

哎呀!该页面是私有的。

而不是

哎呀!该页面不存在或是私有的。

6 个赞

是的,在这种情况下使用 else 子句更可取。

2 个赞

另外,建议在 Ember 版本的 404 页面上添加一个“返回”按钮(window.history.back()),因为在这种情况下,这是用户唯一合理的操作。

2 个赞

这已经实现了。原来服务器已经返回了 403 状态码,只是错误消息不同。

3 个赞

太好了,我已更新了自托管实例,现在关于 staff 主题的链接

https://discourse.codinghorror.com/t/test-topic-for-close-states/3516

在隐私模式下访问时,配合启用 detailed 404,正确返回了:

哎呀!该页面是私有的。

谢谢!:clap:

4 个赞

我们经常收到一个请求,希望在这种情况下该页面显示一个登录按钮,因为登录后_可能_就能访问该主题。

5 个赞

我认为这是一个非常棒且合理的请求。@eviltrout,如果在发布前这样做风险不大,能否请你分配一下?

6 个赞