robots.txt写错把整站屏蔽了?先记住这条底线

来源:互联网 时间:2026-09-22

robots.txt 写错最惨的一种,是里面多了一行 Disallow: /,整站被屏蔽,收录唰唰往下掉,自己还以为是搜索引擎出了问题。这种事故每年都在发生,原因往往不是技术难度,而是改文件时随手复制了别人的模板,或者调试时忘了删掉临时规则。下面先说这条底线,再讲怎么自查、怎么恢复。

一、这条底线:Disallow: / 等于对爬虫关站

现象:站点收录几天内掉了一大截,抓取频次归零,页面上什么都没改。

原因:在 User-agent: * 之下写一行 Disallow: /,意思是禁止所有爬虫抓取全站。爬虫遵守规则,看到这行就再也不来了。这不是降权,是站点主动把门锁上了。

做法:永远不要在生产环境的 robots.txt 里写单独的 Disallow: /。测试屏蔽效果时,用具体的目录路径,比如 Disallow: /test/,绝不整站。真要临时关站,也优先用其他方式,而不是拿 robots.txt 当开关——它生效快,恢复却很慢,爬虫重新回来需要时间。

二、其余三种容易写错的写法

一是把 Allow 和 Disallow 的顺序弄反。以 / 开头的通配规则里,更具体的规则优先,但很多人以为后写的覆盖先写的,结果该开的没开、该挡的没挡。二是大小写写错,路径区分大小写,/Admin/ 和 /admin/ 是两条完全不同的规则,后台路径写错就挡不住。三是通配符滥用,把 Disallow: /* 当成“挡住所有”,实际含义和 Disallow: / 差不多,一样会把站关掉。改完务必逐条读一遍,把星号和问号所在的行单独拎出来确认。

三、一段脚本帮你排查

这段脚本做两件事:抓取你的 /robots.txt,逐行找出可能屏蔽全站的写法(Disallow 值为 /、/*、*);再抓一次首页,看页面头部有没有 noindex。要改的只有 BASE 这一行。跑完如果有任何一条命中,就说明站点正在被屏蔽或即将被屏蔽,必须立刻处理。

# 排查 robots.txt 是否屏蔽全站 + 首页是否被 noindex
import urllib.request, re
from urllib.error import HTTPError, URLError

BASE = "https://www.example.com" # 改成你的站点

try:
robots = urllib.request.urlopen(BASE + "/robots.txt", timeout=10).read().decode("utf-8", "ignore")
for line in robots.splitlines():
s = line.strip()
if s.lower().startswith("disallow") and s.split(":", 1)[-1].strip() in ("/", "/*", "*", "/*.*"):
print("高危规则:", s, " )
except (HTTPError, URLError) as e:
print("robots.txt 读取异常:", e)

html = urllib.request.urlopen(
urllib.request.Request(BASE, headers={"User-Agent": "Mozilla/5.0"}), timeout=10
).read().decode("utf-8", "ignore")
m = re.search(r'<meta[^>]+name=["\']robots["\'][^>]*>', html, re.I)
print("首页 meta robots:", m.group(0) if m else "未设置")
if m and "noindex" in m.group(0).lower():
print(" )

跑完看两项输出:出现“高危规则”的,说明 robots.txt 正在关站;出现“首页被 noindex”的,说明屏蔽来自页面本身而不是 robots 文件。两种情况的处理方式不同,先分清是哪一种,再动手改,别一上来就删文件。

四、确认被屏蔽后怎么恢复

第一步,改回 robots.txt,删掉屏蔽全站的那行,保留必须挡的后台目录,保存后立刻用浏览器访问确认。第二步,去百度搜索资源平台的抓取诊断里测首页,确认返回“抓取成功”。第三步,观察抓取频次,一般几天内会从零开始回升,收录在之后两三周逐步恢复。恢复期间别急着改其他东西,保持站点稳定,让爬虫重新建立信任。如果抓取频次迟迟不动,再检查是不是同时还有 noindex 或服务器返回异常,两处都排查过再判断。

robots.txt 的底线就一条:任何情况下都不对全站写 Disallow: /;定期用脚本扫一次,出问题立刻改回并跑抓取诊断,比事后猜原因快得多。

相关阅读:

《robots.txt怎么写?规则语法与常用配置示例》

《sitemap怎么生成?生成、提交与自动更新一条龙》

《站里死链越积越多?不处理会拖累整站的抓取》

相关文章

标签:

A5创业网 版权所有

返回顶部