做网站SEO的时候,很多人把精力都花在关键词布局和外链上,却忘了robots标签优化这道基础门槛。它直接告诉搜索引擎哪些页面能抓、哪些不能抓,配置错了轻则收录混乱,重则核心内容被屏蔽。这篇文章聊聊实际项目中常踩的坑和对应的处理办法。
不少新手会混淆这两个东西。robots.txt是放在服务器根目录的纯文本协议,爬虫在访问站点前先读取它,决定要不要进入某些路径。而robots标签是写在HTML页面
里的元标签,作用于单页级别,控制的是“进来了之后怎么处理”。举个例子,robots.txt可以拦截/admin/整个目录的爬取,但如果某个被拦截目录里的页面意外被外链引到了,爬虫可能还是会通过链接发现它。这时候页面上的robots标签就能补一刀,用noindex明确不让建索引。
| 对比维度 | robots.txt | robots标签 |
|---|---|---|
| 作用位置 | 服务器根目录文件 | 网页HTML头部 |
| 控制粒度 | 目录或路径模式 | 单个页面 |
| 能否阻止收录 | 不能,仅阻止抓取 | 能,可noindex |
| 生效前提 | 爬虫遵守协议 | 页面能被访问到 |
在robots标签优化里,核心就是几个content属性值。下面列出实操中最常碰到的:
组合写的时候直接用逗号隔开就行:
<meta name="robots" content="noindex, nofollow">对于百度这类中文引擎,有时还会用<meta name="baiduspider" content="noarchive">做爬虫级定制,但通用写法用robots基本够用。
之前帮一个电商客户排查收录异常,搜品牌词居然出来一堆/user/order/detail?id=xxx的页面。查了下根目录robots.txt,确实屏蔽了/user/,但那些订单页被短信链接、客服回复带到了站外,爬虫顺着链接还是抓到了,而页面本身没加noindex。
修复方式很简单,在账号相关模板的head统一注入:
<meta name="robots" content="noindex, nofollow">上线两周后,那些脏URL陆续从索引里掉出去。这里注意,如果只用robots.txt拦路径,爬虫不来抓就永远发现不了这些页已存在索引里,必须用标签双保险。
带筛选条件的列表页,比如/shoes?color=red&size=42,量一大就被当成重复内容。我们的做法是对非默认排序的筛选页用noindex, follow:不收它,但让权重流向下级商品页。
默认第一页保留index, follow。这样金字塔结构清晰,不会分散主导航页的排名能力。
有次看到有人在所有页面挂了noindex想“先低调上线”,结果整个站三个月没展现。还有人把nofollow加在内链上,以为能集权,实际是切断了爬虫发现新文的路。
另外,若页面已经被索引,你才加noindex,搜索引擎得重新抓一次才会剔除,这期间流量不会立刻回来。所以上线前就该规划好robots标签优化策略。
不用等收录表现,直接用搜索平台的抓取诊断工具,看返回的HTML里有没有对应meta。也可以命令行甩个curl:
curl -s https://example.com/page | grep 'name="robots"'看到输出才算数。有些CMS会在缓存层把head洗掉,这种隐蔽问题只有主动查源码才能发现。
robots标签优化看着像一行代码的事,真要落到站点架构里,得结合爬虫预算、页面层级和业务诉求来排布。把该收的收干净,该放的放出权重,索引质量自然就上来了。
评论
加载中...