peopleinside 供其他阅读此讨论的人参考,并对 GitHub issue 中讨论的内容做一个总结:
问题出在通过浏览器导航到页面(完整的 HTTP 页面请求)和在页面内使用单页应用(SPA)路由进行导航(Mithril 组件带后台 API 请求)之间的区别。
目前这个扩展只覆盖了完整的 HTTP 页面请求。支持 SPA 导航内部的错误需要大量工作,而且这种情况很少发生,至少在核心 Flarum 和扩展中是这样。
但这确实意味着,由扩展创建的一些用户或讨论链接在处理 404 错误时,会显示默认行为(左下角的红色弹出窗口)而不是完整的自定义错误页面。其中一个例子是 FoF Split 扩展,它会显示你可能无法查看的分拆讨论的链接。
这和 Flarum 在这两种情况下显示 404 错误的方式完全一样(完整页面显示"返回首页"链接,或红色弹出窗口),而我们只自定义了其中一种。
类似地,这也适用于自定义的 401/403/500 错误。如果它们发生在加载全新页面时,会显示自定义的 HTML 代码。但如果它们是在 SPA 内部导航时发生的,则会显示正常的 Flarum 错误弹出窗口。