/u/*的规范结构导致许多网址被索引

起初,我为“Bug”类别写了这篇文章……

……但如果有人觉得这应该得到一个 PR 或 commit :crossed_fingers:,我不会阻止你。

在过去的两个月里,我一直在努力研究 Discourse 的规范结构,总的来说它很棒。

no_definitions=true/search?q= 这样的奇怪 URL 会给出正确的规范。

当向用户和爬虫提供网站的 JS 版本时,这一切都可以正常工作。

但似乎 /u/* URL 被忽略了——它们有规范,但指向的 URL 导致谷歌索引了数千个额外的 URL。

任务:

我希望用户名字后面的所有 URL 都规范化到主用户个人资料页面。

所以 /u/FlyNumber 是主个人资料页面。

以下内容将规范化到上面的 URL(而不是像现在这样规范化到自身):

/u/FlyNumber/summary
/u/FlyNumber/activity
/u/FlyNumber/activity/topics
/u/FlyNumber/activity/replies
/u/FlyNumber/activity/likes-given
/u/FlyNumber/badges
1 个赞

这是关于您在此处讨论的自定义索引设置吗?

如果是,最好注明这一点,以便求职者了解他们将要承担的任务。

默认情况下,/u/ URL 不会被索引,这在 robots.txt 中设置,并在页面上的初始标头请求中传递。

image

4 个赞

不,因为我已放弃使用 prerender - 它无法渲染主菜单、登录按钮等。

Google 机器人直接获取“应用”。

我已将 Discourse 的隐藏站点设置设置为向爬虫提供 JS 版本。Google 似乎处理得很好。(稍后将有更多更新。)

说得对,/badges 也是如此……

我正在使用自定义编辑的 robots 文件。

我正在使用 Cloudflare workers 来修改标头'index'

/u/FlyNumber/summary
/u/FlyNumber/activity
/u/FlyNumber/activity/topics
/u/FlyNumber/activity/replies
/u/FlyNumber/activity/likes-given
/u/FlyNumber/badges

我还想指出,完全移除这些 URL 的规范标签将是朝着正确方向迈出的一步。(恕我直言,我的方法对 SEO 更好)

如上所述,它设置为 noindex,因此我不确定 Discourse 为什么会生成规范标签。

也许有人知道用 JS 和 Cloudflare Workers 来实现这一点的巧妙方法?这样我就不必修改 Discourse 代码了。

我可以在 <s class="text-muted">/u/*/summary</s> - (我只能在 /u/* 上触发)上设置一个“触发器”,并执行类似以下操作:

const canonical = document.querySelector('link[rel=\"canonical\"]');
if (canonical !== null) {
  canonical.href = 'NEW_HREF_GOES_HERE';
}

我在这里能做什么来将用户名传递给 NEW_HREF_GOES_HERE - 并且 canonical 最终会变成 /u/* 而不是 /u/*/summary。

非常感谢任何帮助。

编辑
也许有人能指出相关的 GitHub 页面 - 我会冒险修改代码。

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.