一家手机维修网站有公开的服务页,也有不少站内搜索结果网址。站长想减少爬虫访问搜索结果页,但不想挡住真正的维修服务。该用 robots.txt 吗?
Robots.txt 控制的是抓取访问。 它告诉遵守规则的爬虫,在某个网站上可以请求哪些网址路径。它不能删除网页、保护私密资料,也不能保证被禁止抓取的网址从搜索结果消失。需要控制抓取时才用它;保密和移除索引是不同的问题。
robots.txt 实际控制什么?
爬虫访问网站时,会查找该主机根目录的文件,例如 https://example.com/robots.txt。文件可用 User-agent 指定爬虫,再用 Disallow 或 Allow 指定路径。Allow 可以为较宽的限制设一个较窄的例外;这两种指令都不决定网页是否该进索引。匹配的 Disallow 告诉该爬虫不要请求那些网址,不会阻止访客在浏览器里打开。
规则只适用于提供该文件的协议、主机和端口。例如,www.example.com 上的文件不会自动控制 shop.example.com。因此要检查真正的网址,不能只看一条表面相似的规则。
怎样读一份简单的 robots.txt?
User-agent: *
Disallow: /internal-search/
Sitemap: https://example.com/sitemap.xml
这里的 * 泛指爬虫。Disallow 要求它们不要抓取 /internal-search/ 下的网址。Sitemap 指向网站地图,并不是允许抓取的规则。该列哪些网址,可看XML 网站地图指南。这只是阅读示例,不是让所有网站照抄的配置。
路径必须写准确。对匹配的爬虫来说,Disallow: / 会挡住该主机的所有网址;Disallow: /internal-search/ 则比 Disallow: /internal-search 窄,后者还可能匹配其他以这些字母开头的路径。一个字符之差,就可能挡住更多页面。如果 Allow 和 Disallow 都匹配,Google 会采用更具体的路径规则;不是最后一行说了算。
robots.txt 不能做什么?
- 不能可靠地把网页移出 Google 搜索。 Google 可能通过别处的链接知道被挡的网址,并在没抓取内容的情况下显示网址。如果一张公开网页不该被索引,需让 Google 能抓取它并读到
noindex。 - 不能保护机密资料。 这份文件是公开的,爬虫也不一定遵守。私密内容应由登录或服务器权限控制保护。
不要一边用 robots.txt 挡住某网址,一边指望 Google 读到该网页里的 noindex;禁止抓取可能让它看不到这条指令。想判断哪些网页该出现在搜索结果,可读收录与 noindex 指南;完整流程可读技术 SEO 入门指南。
什么情况下适合设置规则?
有明确的抓取访问问题时再设置,例如证据显示大量低价值的站内搜索网址造成抓取负担。挡住整个文件夹前,先列出里面的网址。重要的服务页、产品页,以及呈现主要内容所需的文件,应保持可抓取。很多小网站根本不需要额外限制。
重要页面仍应通过正常的内部链接让人和爬虫找到;有需要时再配合网站地图。网站地图与 robots.txt 操作指南讨论整站配置;本文只帮你决定何时使用抓取规则。
发布规则前后怎样检查?
- 打开确切主机的
/robots.txt网址,找出适用于目标爬虫的规则组。 - 挑两个代表网址:一个计划挡住,一个重要且必须能抓取。用完整路径核对规则,避免误发
Disallow: /这种过宽设置。 - 文件上线后,在 Search Console 检查重要网页的抓取许可状态;适合时再运行实时网址测试。允许抓取不等于保证索引或排名。
记录每条限制存在的原因;网站结构改变时,重新检查它们。
常见问题
robots.txt 现在还有用吗?
有用,前提是网站确实需要管理爬虫对某些网址的访问。页面不多、链接清楚的小网站,可能不需要特别限制。
robots.txt 能阻止网页被索引吗?
对普通网页来说,不能可靠做到。它要求守规则的爬虫不要抓取匹配网址,但 Google 仍可能从别处发现并列出该网址。要排除索引,应让 Google 抓取并读到 noindex。
怎样查看网站的 robots.txt?
打开目标协议和主机根目录的 /robots.txt,例如 https://example.com/robots.txt。子域名或不同主机可以有另一份文件。
什么时候改用 noindex?
公开可访问的网页不该出现在 Google 搜索时,用 noindex,同时允许 Google 抓取它以读取指令。私密内容则要用访问权限保护,不能靠这两种指令。


