“?tl”参数行为异常

我注意到了一些奇怪的现象。您可能知道,有时使用 Google 搜索 Meta 会产生更好的搜索结果。所以我去了 Google,输入了我的查询,找到了我的主题,突然注意到浏览器标签中的主题标题(而不是主题本身!)、类别名称以及仅该类别被翻译成了荷兰语。

奇怪的是,当我点击到 Meta 的另一个页面时,这个现象消失了。

经过一番困惑,我发现这是因为该主题的 URL 末尾附加了 ?tl=nl,而这个参数是由 Google 添加的。

所以,我已登录,而 tl 参数本应只对匿名用户生效。但显然,如果您已登录,它确实会影响某些元素。

现在让我们在未登录的情况下尝试一下,看看会发生什么。应该可以吧?

嗯,事实并非如此。

所以,回到为什么这个参数会出现在搜索引擎上的问题。

事实上,该主题在 Google 上出现了两次,一次带有 ?tl=nl,一次不带。有趣的是,带有该参数的那个的标题和摘要不是荷兰语,而是像另一个一样是英语。

为了让事情更有趣,源代码中的规范 URL 没有该参数,所以 Google 为什么会将其索引为带有该参数,我还不清楚。

<link rel="canonical" href="https://meta.discourse.org/t/how-to-have-multiple-copies-of-default-theme/359789">

所以我们有:

  • tl 参数本应只对匿名用户生效(根据 Set locale from param 设置的描述),但对于已登录用户,它确实会影响 <html> 标题和类别。

  • 它不知何故出现在 Google 上(尽管我不知道如何阻止它,因为 Google 似乎会忽略 canonical?)

  • 对于匿名用户,tl 参数仅部分生效,并且不会持久化。它不会在请求之间传递,似乎也不会设置 cookie(至少在 Meta 上不会)。

    • 设置 ?tl
    • 一切都变成中文 :tada:
    • 导航到某个主题
    • 发现只有类别是中文 :sob:
    • 导航“返回”
    • 发现欢迎横幅和类别仍然是中文,但主题是英文 :thinking:

5 个赞