上线前核对抓取与索引配置,核心是回答两个问题:爬虫能不能顺利取到页面,以及取到的页面有没有被明确告知“可以收录”。做法不是逐项凭感觉检查,而是从 robots、页面响应、可抓取链接、索引指令到站点地图逐层收集证据,每层都能看到具体输出,再决定是否上线。
假设你正在开发一个企业站,准备上线,站点结构是:首页 /、产品列表 /products、一个测试页 /test。上线前你希望首页和产品列表被收录,测试页不进入索引。下面按顺序核对,每个步骤都记录“预期结果”和“实际结果”。
/robots.txt,确认没有用 Disallow: / 把整站挡住,也没有误挡 /products。如果文件返回 404,说明没有规则限制抓取,这本身不是错误,但要确认这是有意为之。<head>,确认没有 <meta name="robots" content="noindex"> 之类的指令。开发阶段为防止测试页被收录而加的 noindex,经常忘记在正式页面上移除。/test 是否确实带有 noindex,或者是否已经从导航和站点地图中移除。如果它只是“没被链接到”,仍可能被外部链接或历史记录带入,所以更可靠的做法是显式加 noindex。/sitemap.xml,确认它能正常打开,且只列出希望被收录的 URL,不包含测试页、后台地址和带参数的重复地址。抓取的第一道门是 robots.txt。它决定爬虫“可以请求哪些路径”,但并不保证页面一定被抓。核对时要区分“被禁止抓取”和“抓取后不索引”:前者用 Disallow,后者用 noindex,两者作用不同。常见错误是把不想收录的页面写成 Disallow,结果爬虫根本看不到页面上的 noindex 指令,反而可能因为外部链接而仍然出现在索引里。
第二道门是页面响应。重点看状态码和跳转链:
第三道门是链接可达性。爬虫主要靠链接发现页面。如果产品列表只通过 JavaScript 点击事件跳转,而 HTML 里没有可抓取的 <a href>,爬虫可能发现不了它。核对方法是禁用 JavaScript 后查看页面源码,确认关键页面仍有普通链接指向。
页面能否进入索引,除了被抓取,还取决于页面级指令和内容质量。上线前至少核对以下几项:
<title>,且不是“未命名文档”或开发占位符。<meta name="robots" content="noindex">。如果用了 noindex, follow,表示不索引本页但可以跟随链接,要确认这是有意设置。<link rel="canonical"> 指向自身或正确的首选地址,而不是指向测试域名或 http 版本。这里有一个容易混淆的点:canonical 是“建议”,不是强制指令。如果多个地址内容相同,canonical 可以帮助集中信号,但前提是这些地址都能被正常抓取。若某个重复地址被 robots 禁止抓取,爬虫无法读取它的 canonical,判断就可能不符合预期。
把上面的检查固化成上线前清单,逐项打勾并保留证据:
如果核对中发现首页返回 200 但未被收录,可能原因包括:页面刚上线尚未被抓取、robots 挡住了 CSS 或 JS 导致内容无法渲染、canonical 指向了其他地址、页面内容与已有页面高度重复。这些是不同原因,需要分别用抓取日志、页面源码和工具报告去验证,不能凭一个现象直接断定。
下一步建议:把上述清单变成部署流程中的一个检查环节,每次上线前对核心页面跑一遍,并记录状态码、robots 规则和索引指令的实际值。这样出现问题时,你能拿到的是一条可复查的证据链,而不是“感觉配置没问题”。