起初,我为“Bug”类别写了这篇文章……
……但如果有人觉得这应该得到一个 PR 或 commit
,我不会阻止你。
在过去的两个月里,我一直在努力研究 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 个赞
justin
(Justin DiRose)
2
这是关于您在此处讨论的自定义索引设置吗?
如果是,最好注明这一点,以便求职者了解他们将要承担的任务。
默认情况下,/u/ URL 不会被索引,这在 robots.txt 中设置,并在页面上的初始标头请求中传递。

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 页面 - 我会冒险修改代码。
system
(system)
关闭
6
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.