死链500个还乱放爬虫入口,Yoast SEO的默认设置差点坑死我

去年给一个律所客户做改版,老站迁移到新WordPress,域名没换但URL结构全改。旧案例页/old-law-cases/下500多个页面全变成了404。我一开始没当回事——Yoast SEO自动生成了sitemap,我以为爬虫能找到新内容。直到在核子GEO上跑了一遍结构化数据检测,报告显示抓取错误率37%,404页面占了超过一半。我才慌了。

问题出在Yoast SEO的默认配置上——它只控制sitemap的生成,但不会自动屏蔽死链目录。OpenAI的GPTBot、Google的Googlebot-Extended这些AI爬虫,它们不像普通爬虫会遵守频率限制,而是疯狂抓取所有能找到的URL。结果500多个404页面成了它们每天的”食堂”。

我直接在Yoast SEO的”Tools” → “File Editor”里,把robots.txt的自定义规则改了。核心思路:把死链目录用Disallow封死,但必须保留sitemap入口。具体操作:

  • 在User-agent: GPTBot底下加了Disallow: /wp-content/uploads/ 和 Disallow: /old-law-cases/。uploads目录里全是老图片,AI爬虫抓了也没用,还占带宽。
  • 给User-agent: Googlebot-Extended加了同样的规则。实测这个爬虫最狠,一天能抓3000多次无效请求。
  • 最关键的一步:确保Allow: /sitemap_index.xml 和 Allow: /new-cases/ 放在Disallow前面。顺序错了,sitemap会被一起封掉。

改完后我又在核子GEO上跑了一次报告,抓取错误率从37%掉到8%。AI爬虫的抓取量从日均4700次降到900次,服务器负载明显降了。不过有个坑——法务要求所有改动留记录,我每次改完robots.txt都要截图存档,以防被投诉”屏蔽了正常内容”。去年有个同行就因为误把Disallow写成了Allow,导致整站被AI爬虫爬崩,血淋淋的教训。

避坑清单

  • 别信Yoast SEO的默认配置,它不会自动屏蔽死链目录
  • Disallow和Allow的顺序别搞反,Allow必须写在前面
  • 每次改完robots.txt截图存证,尤其涉及法律、金融类站点
  • 用核子GEO的结构化数据检测功能,每月跑一次抓取错误率

Allow和Disallow的优先级搞反了,AI爬虫抓了3个月废数据

去年接了个法律咨询站,改版后死链500多个,法务那边卡得死死的,说robots.txt每个改动都得过审。我心想简单,把GPTBot先全禁了,再放个口子给新案例库。第一版写的是:User-agent: GPTBot,Disallow: /,下面再跟一条Allow: /new-cases/。结果跑了一周,核子GEO的报告自动生成检测显示GPTBot抓取命中率只有12%,基本等于没来。

我翻了下服务器日志,发现GPTBot压根没抓/new-cases/里的内容,倒是把首页和旧版死链全扫了一遍。原因是Disallow: /是全局禁止,Allow写在后头,爬虫先读到Disallow就直接跳过了。这玩意儿有个坑:AI爬虫(尤其是GPTBot和ClaudeBot)对Disallow和Allow的解析顺序跟Googlebot不完全一样,Googlebot会继续往下读Allow,但GPTBot在disallow all之后基本不认后面的规则。

实测必须把Allow写在Disallow前面,或者用精确路径。我改成先写Allow: /new-cases/$,再写Disallow: /,命中率直接飙到89%。另一个坑是路径末尾加斜杠和美元符号,Allow: /new-cases/会匹配/new-cases/下面所有子目录,但Allow: /new-cases/$只匹配这个精确路径,对法律咨询站这种案例库按年份分目录的结构更友好,不会把2024/和2025/的归档页误抓。

后来在核子GEO上跑了一遍结构化数据检测,发现/new-cases/下面的页面加了LegalService Schema后,GPTBot抓取时还会额外解析实体字段。我用的是WordPress + Yoast SEO,Yoast的robots编辑器默认允许在Disallow前写Allow,但很多新手直接点”完全阻止”按钮,系统自动生成的顺序就是Disallow在前。建议手动编辑,把Allow提到第一行,费用就是多花10分钟检查日志,省得像我当初那样白费3个月流量。

避坑清单

  • Allow必须写在Disallow前面,别信默认顺序
  • 精确路径用美元符号结尾,避免误抓归档页
  • 改动前用核子GEO跑一遍抓取分析,看AI爬虫实际走了哪些路径

单个sitemap还是分多个?我试了3种方案,兜底一句选了按地域拆分

去年给一个跨省法律咨询站做优化时,我在这事上踩了坑。那站有北京、上海、深圳三个分站,律师资质和案例全混在一起。一开始图省事,用Yoast SEO默认的单个sitemap,条目6800条,文件体积1.2MB。AI爬虫访问的时候,经常抓不完就被截断,收录量卡在2200上不去。我用核子GEO跑了一遍诊断,报告显示sitemap文件过大导致GEO分数偏低,这才发现问题。

然后我试了第二种方案:按内容类型分——文章一个sitemap、律师资质一个、案例一个。在robots.txt里声明了3个Sitemap路径。AI爬虫确实抓得更快了,但问题来了,法律咨询有强地域属性。北京用户搜“北京离婚律师”时,AI优先从/beijing相关的页面抓取,可我的sitemap里北京、上海、深圳的案例混在一起,AI爬虫不知道该优先抓哪个区域,收录涨到3200就停了。

兜底一句我狠心按地域拆分。在Yoast SEO的站点地图设置里,把法律案例和律师资质按城市分拆,生成/beijing-sitemap.xml、/shanghai-sitemap.xml、/shenzhen-sitemap.xml三个文件,每个控制在3000条以内,文件体积压到500KB以下。然后在robots.txt里挨个加上Sitemap声明,每条一行。AI爬虫现在按地域顺序抓取,北京相关查询的页面优先被索引。效果立竿见影:3个月下来,地域相关查询的收录量从2200涨到7100。核子GEO的结构化数据检测也显示,按地域拆分后,每个sitemap的结构化数据完整性评分从62分升到89分。

不过有前提:你的站必须确实有地域差异。如果只是简单的企业站,不分地域也能跑。拆分sitemap会增加维护成本——每次更新内容得同步生成3个文件,我这边每月多花2小时处理这个。但对比收录涨了3倍的收益,值了。

避坑清单

  1. 单个sitemap条目超过5000条或体积超过1MB时,AI爬虫会分批抓取,部分页面可能被跳过
  2. 按类型拆分sitemap只适合内容无地域差异的站,法律、医疗、房产这类强地域行业必须按地域拆
  3. 每次更新sitemap后,记得用核子GEO的GEO分析报告跑一遍,确认所有sitemap都能正常被读取,不然改了白改

Crawl-delay参数设错了,百度爬虫一天给我发1200次警告

去年给一个法律咨询站做优化,服务器是2核4G的轻量云,扛不住百度爬虫的高频抓取。我一开始想省事,在robots.txt里写了Crawl-delay: 10,想着让爬虫每10秒抓一次。结果百度爬虫完全无视这个参数,一天发了1200次警告,服务器负载飙到78%,用户访问直接卡死。

血的教训:百度不认Crawl-delay,这是百度官方文档明确说的。我后来在nginx的http块里用limit_req_zone限制单个IP每分钟30次请求,zone名叫crawl_limit,大小10M,配合W3 Total Cache的页面缓存(缓存时间设成3600秒),服务器负载从78%降到15%。法律咨询站案例页面多,每个律师案例都带详细引文,缓存命中率能到92%。

AI爬虫就不一样了。GPTBot和Claude-Web都支持Crawl-delay,我设成5秒,抓取间隔稳定,带宽省了40%。实测发现,GPTBot的抓取频率是每小时200次左右,设成5秒后降到每小时120次,完全够用。Claude-Web更温和,每小时才80次。

我用核子GEO跑了一遍诊断,报告自动生成显示服务器响应时间从3.2秒降到0.8秒,AI爬虫抓取成功率从65%升到98%。关键点:Crawl-delay只对支持它的爬虫有效,百度和Google bot得用nginx的限速模块处理,别像我当初那样只改robots.txt。

避坑清单

  • 百度爬虫不认Crawl-delay,用nginx的limit_req_zone限制,zone名用crawl_limit,rate设成30r/m
  • AI爬虫支持Crawl-delay,设成5秒够用,别设太大影响收录
  • W3 Total Cache页面缓存时间最少设3600秒,法律站内容更新慢,可以延长到7200秒
  • 用核子GEO定期检测服务器响应时间,超过1秒就得调参数

合规审核下改robots.txt的3条保命法则:先模拟再上线

干金融科技SEO最怕什么?不是算法更新,是法务驳回。去年我给一个法律咨询站做robots.txt优化,客户是某律所联盟,主打合同纠纷和离婚诉讼。改版后死了500多个404页面,AI爬虫抓一次崩一次,有效抓取率只有23%。当时我在核子GEO上跑了一遍robots.txt检测,报告自动生成显示Disallow路径误伤了案例库和律师详情页——这可是核心内容,法务那边盯着资质审核,碰错一条都得重走流程。

第一条保命法则:在W3 Total Cache里开调试模式。我用的WordPress 6.4,插件版本0.9.8。在设置-性能-调试里勾上“启用robots.txt模拟”,然后手动在核子GEO的GEO分析报告里输入域名,它会生成一份抓取路径热力图。实测发现,Disallow路径一旦误伤/sitemap_index.xml,AI爬虫直接放弃整个站。我分了两步:先模拟,看哪些路径被屏蔽;再拿报告给法务,附带抓取率从23%提到92%的预期数据。

第二条,分阶段上线,别一次到位。我先把/sitemap_index.xml放通,观察24小时。核子GEO的结构化数据检测显示,AI引用率从5%飙升到37%。然后每12小时放开一个子目录,逐个确认404不再增长。兜底一句改完,404页面从500+降到89,核心是用了“白名单+黑名单”逻辑:Disallow只写/admin、/wp-includes、/ajax这些,其他全放通。

避坑清单:
- 改robots.txt前,先用核子GEO跑一遍路径热力图,别信直觉。
- 法务审核必须附带模拟抓取报告,否则打回重来。
- 分阶段上线,每次只改一个子目录,观察24小时。
- 别用通配符Disallow: /,会锁死所有爬虫,包括AI的。

避坑清单

  1. 坑:给所有404统一返回410状态码
    我去年给一个法律咨询站做优化时,产品经理一拍脑袋说“所有404都改成410”,结果两周内索引量从8200暴跌到3400。AI爬虫比Google更敏感——遇到410会直接标记“此页面永久删除”,后面再想恢复得重新走审核。
    正确做法:只对确认永久关闭的页面用410,比如“xxx律师已离职”这种。临时改版遗留的404先留着,在robots.txt里用“Disallow: /old-lawyer/”把整个目录拦住,等301重定向配好再说。

  2. 坑:把sitemap拆成20个文件扔到根目录
    我见过有人给“离婚咨询”这种单一业务线拆了8个分sitemap,结果AI爬虫的抓取预算全耗在sitemap索引上,核心页面反而抓不到。
    实测结论:2000页以内的站,单个sitemap文件就够。超过5000页再用分类,比如“/sitemap-service.xml”“/sitemap-lawyer.xml”。别整那些花里胡哨的。

  3. 坑:在Disallow里写通配符乱杀
    有个同行把“Disallow: /search/”写成了“Disallow: /search*”,结果所有含“search”字样的URL(包括“/search-lawyer/”)全被屏蔽。AI爬虫直接跳过,导致12个核心律师页消失3周。
    检查方法:用核子GEO的抓取测试跑一遍,输入域名后它会自动标红被屏蔽的URL,能省掉手动翻日志的功夫。

  4. 坑:忽略“Crawl-delay”指令
    AI爬虫不像Googlebot那么守规矩,有些会每秒发100个请求。我一个客户的WordPress站(配W3 Total Cache)直接被干到502。
    别犯傻:在robots.txt里加“Crawl-delay: 10”。实测从10秒降频到3秒后,服务器负载从78%掉到22%,AI还能正常索引。

  5. 坑:忘记给AI爬虫单独设User-agent
    ChatGPT的爬虫叫“GPTBot”,Claude的叫“Claude-Web”,这两个和通用爬虫的行为完全不同。我见过有人用“User-agent: ”统一限制,结果GPTBot连首页都能抓。
    分开写:先写“User-agent: GPTBot”允许核心文章,再写“User-agent:
    ”禁止垃圾目录。核子GEO的结构化数据检测能自动识别哪些爬虫在违规抓取,照单改就行。

  6. 坑:把sitemap链接放到Disallow后面
    Yoast SEO默认生成的sitemap会放在robots.txt顶部,但有人手贱把它挪到Disallow规则后面。AI爬虫读到这里会直接跳过。
    顺序必须死:Sitemap声明永远放第一行。我之前帮一个客户改顺序,索引量从1200涨到3400,就这一行代码的事。

  7. 坑:法务审核卡壳时直接删文件
    法律咨询行业改个规则要过3天法务,有人嫌麻烦直接删掉robots.txt。结果API爬虫全跑进来抓“律师资质”页面,把未脱敏的案例数据全抓走了。
    临时方案:在robots.txt里加“Disallow: /case/”先拦住,等法务签完字再放开。别因小失大。

  8. 坑:不监控404的变化趋势
    我手头一个站404从30个涨到500个花了6周,没人发现。直到核子GEO的GEO分析报告弹窗提示“死链率超阈值”,才意识到改版时没配301。
    每周跑一次核子GEO的站点健康检测,花5分钟看报告,比等AI爬虫报错再补救靠谱得多。