About.html 页面在搜索结果中显眼,但却不见踪影

有一个指向 about.html 的链接,但它缺失了——就像在 Meta 上一样:About - Discourse Meta

我是否忽略了某个设置?谢谢!

Discourse 中没有 .html 扩展名。

About - Discourse Meta <— 这是正确的网址

是的,谢谢,但谷歌不知怎么还是找到了一个。:man_shrugging:

我没看到

这很有趣 :wink: 我也可以这样找到它:


→ about.html

找到了。

或许可以安装站点地图插件

谢谢,但已经安装好了。

站点地图插件甚至没有宣传 /about 页面。
我能想到的唯一可能是,有人在某个地方链接到了 /about.html

而 Discourse 却返回了 200 OK 状态码::scream: :scream: :scream:

它们对许多无效的文件名都返回了 200 响应:

  • faq.html
  • categories.html
  • u.html
  • tags.html
  • top.html
  • badges.html

我本来以为这只是内置路由的问题,但 cake day 插件却可以正常工作:

  • /cakeday/anniversaries/today.html

而 knowledge-explorer 在访问以下路径时却返回 404:

  • /docs.html

但以下路径却没问题:

  • badges.html

:thinking:

一两周前是不是也出现过类似 JS 文件的问题?

嗯,对于这些不寻常的 URL,我们是否应该返回 200 状态码 @eviltrout

该问题与 Rails 路由的工作方式有关。默认情况下,它允许任何端点指定一个带可选点号的 :format 参数。因此,.html 表示 HTML 格式,.json 表示 JSON 格式。

about.html 等同于 /about(两者都请求 HTML 版本)。然而,Ember 中不存在 about.html 路由,因为我们从未使用带 HTML 扩展名的路由,因此前后端会出现不一致。服务器返回 200 状态码,但客户端随后会报错,提示未找到该资源。

有几种方法可以解决此问题。我们可以优化 Rails 路由,确保其不支持 .html 但继续支持 .json。我目前没看到全局应用此配置的方法,但也许有我尚未了解的方式。

说实话,我对这项工作的热情不高。除非有非常紧迫的理由需要修复,否则我认为我们可以暂时接受这一现状。