Wicket 有状态页面导致 googlebot 逐渐超载

Wicket stateful pages cause creeping overload from googlebot

从 1.5 版开始,我们一直在将 Wicket 用于几个不同的项目。我们最近升级到 Wicket 8(从 6 和 7),我们 运行 遇到了 google 的爬虫问题。它可能是在我们使用 Wicket 6 时开始的,我不确定,因为它有点悄悄出现在我们身上......

问题与 Wicket 在 url 有状态页面中添加 pageId(版本)有关,并且该页面上的所有链接都使用相同的 ID(ajax 链接)。

我们有一个包含大量 ajax 链接的单页应用程序,并且我们看到 googlebot 流量每天都在增加。查看访问日志,我看到 google 尝试 urls,pageid 大于 4 500 000(至少,这只是一个随机样本)(?4529280-1.0-xxxx)。将其乘以每页大约 100 个链接(如果不是更多的话),您就会看到问题所在。 我们还看到 google 尝试 pageid 仍为 0 的链接,但渲染计数很大 (?0-4534543.0-xxxx)。

为什么会这样?我不认为它曾经发生过,但在那种情况下,我不知道 Wicket 是否改变了什么,或者 Google 是否改变了什么。

(使用 setVersioned(false) 没有帮助,因为据我所知,Wicket 仍在添加和递增 pageId)

我们很幸运地更改了另一个应用程序以使用无状态页面,但我不确定我们是否可以用这个应用程序来做到这一点,无论如何这都是一项相当大的工作...

自 1.5.0 以来,Wicket 在 url 中编码页面 ID 的方式没有变化,因此您的所有应用程序都必须相同。

您可以告诉机器人不要索引或不要跟踪页面中包含以下元元素的链接:

<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex, nofollow">

或者您可以使用 robots.txt 来实现同样的效果。

您还可以对页面中的特定链接使用 rel="nofollow"

<a href="https://www.example.com" rel="nofollow">example</a>

是的,通常建议 public 页面使用无状态页面。有状态的应该用于某种 authentication/authorization 后面的页面。