通过 WordPress 嵌入发布的旧主题缺少 x-robots: noindex 和 canonical 标签

大家好,

我注意到从 WordPress 自动发布到 Discourse(用作评论区)的旧帖子存在一个奇怪的问题。

通常情况下,以这种方式发布帖子时,Discourse 会正确地在 HTTP 头中添加 X-Robots-Tag: noindex,并将 canonical URL 设置回指向 WordPress 博客文章。

然而,我发现较旧的帖子正在丢失这些标签noindex 头消失了,canonical 标签也不再存在。以下是出现此问题的一些帖子示例:

有人知道如何解决这个问题吗?

请注意,我无法确切知道目前有多少帖子受到了影响,但看起来数量相当多。

如果能在分类(或标签?)设置中有一个复选框,启用后自动为在该分类下发布的所有帖子添加 noindex,那就太好了。类似于:

[ ] 在搜索结果中隐藏此分类下的帖子

嘿,Thiago,

为了确认我的理解,你的意思是:

  1. 你启用了站点设置“Embed set canonical URL”,并且一直启用着。
  2. 你通过 WordPress Discourse 插件,在一段时间内将多个话题从 WordPress 发布到了 Discourse。
  3. 直到最近,所有按上述第 2 点发布的话题,其 <head> 中都包含一个 link rel="canonical",且 href 指向 WordPress 的 URL。
  4. 最近某个时间点,你认为其中一部分原本符合第 3 点描述的话题,现在其 link rel="canonical"href 已改为指向 Discourse 的 URL。

是这样吗?

嗨,Angus!

是的,没错。

“嵌入设置规范 URL”也已启用:

可以在此处看到,新主题发布时带有 noindex 和 canonical 标签。但我发现旧主题缺少这些标签。

Thiago,如果你有服务器访问权限,能否请找一个规范 URL 无法生效的主题,获取其 ID,然后在 Rails 控制台中运行以下命令,并分享结果。

./launcher enter app
rails c
TopicEmbed.with_deleted.find_by(topic_id: 在此处添加主题 ID)
discourse(prod)> TopicEmbed.with_deleted.find_by(topic_id:73608)
=> nil
discourse(prod)> TopicEmbed.with_deleted.find_by(topic_id:79015)
=> nil
discourse(prod)> TopicEmbed.with_deleted.find_by(topic_id:74248)
=> nil
discourse(prod)> TopicEmbed.with_deleted.find_by(topic_id:76598)
=> nil