robots.txt编写:改版或迁移时应核对什么-别把抓取限制当索引移除

📍 WDQWDWQD987AAAAA:216.73.216.237
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /4af5372ab990.html
📄

robots.txt编写:改版或迁移时应核对什么-别把抓取限制当索引移除

改版或迁移时,robots.txt编写最容易踩的坑,是把“禁止抓取”当成“从搜索结果移除”。实际上,robots.txt只控制爬虫能否抓取路径,不能可靠地让已收录页面消失;如果旧URL被屏蔽,搜索引擎可能仍保留旧标题和摘要,也无法抓到新页面上的301跳转或canonical信号。正确做法是:改版迁移期间优先保证新URL可抓取、旧URL可跳转,只有在页面确实不应被抓取时才用robots.txt,并配合其他移除手段。

常见误解:Disallow等于删除索引

很多人改版后直接写:

User-agent: * Disallow: /old-section/

以为这样旧页面就会从搜索结果消失。但抓取限制和索引移除是两件事:

所以改版迁移时,不要用robots.txt替代跳转、noindex或状态码处理。

改版迁移时,robots.txt编写要核对的五类内容

1. 是否误屏蔽了新目录或资源

迁移后新站常沿用旧规则,例如:

Disallow: /search Disallow: /assets/

如果新站把重要页面放在/search/下,或把CSS、JS放在/assets/下,爬虫可能无法渲染页面。核对方法:列出所有重要目录和静态资源路径,逐条对照Disallow规则,确认没有误伤。适用条件:任何改版后路径结构变化的站点。判断结果:若重要页面或渲染资源被屏蔽,应删除或收窄对应规则。

2. 旧URL是否已做301或410,而不是只写Disallow

旧页面迁移后,正确顺序是:

  1. 旧URL返回301到新URL,或返回410表示永久删除。
  2. 确认新URL可抓取、可索引。
  3. 只有确实不需要抓取的路径,才加入robots.txt。

如果旧URL被Disallow,爬虫不会请求它,也就看不到301或410。已收录的旧URL可能继续出现在结果中。核对项:随机抽取旧URL,用抓取工具或命令行查看HTTP状态码,确认是301/410而不是200或403。

3. Sitemap指令是否指向迁移后的新地址

robots.txt中的Sitemap:行只是提交站点地图位置,不保证收录。迁移后要核对:

注意:不同搜索引擎对robots.txt中Sitemap指令的支持情况须分别核查,不能假定所有引擎行为一致。

4. 是否屏蔽了带参数的旧链接或分页

改版后常见旧参数链接,如?page=2、?sort=price。有人用Disallow: /*?一刀切。这可能误伤需要抓取的分页或筛选页。核对方法:在搜索控制台或日志中查看哪些参数URL有实际搜索流量,只屏蔽无价值参数,不要全站禁止。适用条件:电商、列表页较多的站点。判断结果:若重要分页被屏蔽,应改为更精确的规则或使用canonical处理。

5. 是否把HTTPS迁移误当成安全或排名保证

HTTPS不保证安全无漏洞,也不保证排名。迁移到HTTPS时,robots.txt要核对的是:新HTTPS站点是否可抓取、旧HTTP URL是否301到HTTPS、站点地图是否使用HTTPS地址。不要因为启用了HTTPS就放松对robots.txt、跳转和索引状态的检查。

一个可执行的核对流程

假设你刚完成域名迁移,按以下步骤检查:

  1. 打开新站/robots.txt,确认返回200且内容为纯文本。
  2. 逐条阅读Disallow,标记可能影响新目录、静态资源、分页的规则。
  3. 抽取10个旧URL,确认返回301到对应新URL;抽取5个已删除页面,确认返回410或404。
  4. 确认Sitemap:指向新站点地图,且站点地图内无旧URL。
  5. 用“网址检查”类工具分别测试新页面和旧页面,查看抓取状态与索引状态。
  6. 若发现旧页面仍被索引且已屏蔽抓取,先移除Disallow,让爬虫抓到noindex或410,再观察移除效果。

这套流程适用于已有页面或项目的改版迁移。判断结果:如果旧URL无法被爬虫请求,跳转和noindex都不会生效,应优先恢复可抓取。

下一步

现在就打开你改版后的/robots.txt,把每一条Disallow与当前重要目录做一次对照;对任何屏蔽旧路径的规则,先确认旧URL是否已正确返回301或410,再决定是否保留该规则。

图1 图2

nginx