我检查了 Google Search Console 的覆盖报告,发现我们论坛的许多页面都被 robots.txt 阻止了。于是我去查看了 robots.txt 文件,结果发现 semrushbot 和 ahrefsbot 默认被阻止了:
我知道这两个是广泛使用的 SEO 工具,为什么要阻止它们的爬虫呢?
neounix
(Dark Matter)
2
因为这些爬虫是“资源吞噬型流氓机器人”,它们消耗大量服务器资源,却给网站带来的价值微乎其微。
当然,你可以自定义 Discourse 的 robots.txt 文件并在需要时允许它们访问;但我们在 Discourse 发布之前很久就已经在自己的网站上屏蔽了这些爬虫,并且一直保持着屏蔽状态。

备注(已编辑):
我忘了提到,许多这类“资源吞噬型流氓机器人”并不遵守 robots.txt 规则,因此必须在 HTTP User Agent 层面进行屏蔽。一般来说,我们会在反向代理层面通过 mod_rewrite 来屏蔽这些“不守规矩的资源吞噬型流氓机器人”(顺便一提,这也是在反向代理后面运行的众多好处之一)。
非常感谢提供的信息!
我又发现了一个问题,也许您也能分享一下您的见解。
我知道 Discourse 默认已阻止用户页面,但在我的 Google Search Console 覆盖范围报告中,仍有一些用户页面被索引。这在 Google 看来是个问题,因为这些页面都不应被索引:
谢谢!
@osioke 感谢您的回复!我认为我们已安装的版本应该已经包含该功能了?因为我注意到该修复是在 1 月提交的。
能否请您确认一下,我是否需要升级到最新版本才能使用该功能?
osioke
(Osioke Itseuwa)
7
依我看,更新一下也无妨,不过该修复确实应该包含在你已安装的版本中。我建议你尝试更新并重新验证,除非你因其他原因不想更新。
因为它们很糟糕?它们给服务器带来大量负载,却没有任何可辨识的好处,而且我们的客户套餐中确实有页面浏览量限制。
听起来不错。我们正在更新。希望更新后一切顺利。我会再联系并随时告知您进展。
谢谢!
请澄清一下,是否无法解除对 Semrushbot 和 SEO Spider 的屏蔽?我们需要它们进行 SEO 审计。已尝试在 /admin/customize/robots 中移除这两者(也尝试过添加 Allow: 指令),但在 Screaming Frog 中仍收到 429 错误。这个 429 错误是否是一个独立的问题?非常感谢您的见解。
Johani
(Joe)
11
429 错误表示这些爬虫受到了速率限制。Discourse 默认启用了一些限流机制以防止滥用。您可以在此处了解更多相关信息。
neounix
(Dark Matter)
12
你试过这个方法吗(但请将容器名称替换为你自己的容器名称)?
注意:你也可以在管理界面(Admin UI)中配置此项:
# docker exec -it socket-only bash
root@socket-only:/# rails c
[1] pry(main)> SiteSetting.blocked_crawler_user_agents
=> "mauibot|semrushbot|ahrefsbot|blexbot|seo spider"
[2] pry(main)> SiteSetting.blocked_crawler_user_agents = ""
=> ""
[3] pry(main)> SiteSetting.blocked_crawler_user_agents
=> ""
[4] pry(main)>
另请参阅:
另请参阅:
def self.allow_crawler?(user_agent)
return true if SiteSetting.allowed_crawler_user_agents.blank? &&
SiteSetting.blocked_crawler_user_agents.blank?
...
...
从代码中可以看出,如果你将这两个站点设置设为“空白”,则不会进行任何封锁:
- SiteSetting.allowed_crawler_user_agents
- SiteSetting.blocked_crawler_user_agents
我建议你不要修改这些设置,因为 Discourse 核心默认封锁的这些爬虫并不遵守 robots.txt 协议;不过,这是你的网站,你可以按自己的意愿操作。核心中默认封锁它们是有充分理由的。
话虽如此,Discourse 确实提供了通过 UI 中的站点设置(SiteSettings)来“解除封锁”这些爬虫的选项。