搜索引擎不收录动态页面时,确认可见内容的关键不是反复提交网址,而是先判断页面在“不执行脚本”和“执行脚本”两种状态下分别能输出什么。如果正文、链接、标题都依赖脚本在浏览器里生成,而抓取端拿到的初始 HTML 是空的,那么页面即使对人可见,对搜索引擎也可能不可见。此时应先做一次渲染前后对比,再决定是改输出方式还是只调整抓取配置。
很多人把“浏览器里能正常显示”当成“搜索引擎能读到”的证据,这是动态页面排查中最常见的误判。浏览器会执行 JavaScript、加载接口数据、替换占位符,而抓取端在初始抓取阶段拿到的往往只是服务器返回的第一版 HTML。如果这一版里没有正文,只有 <div id="app"></div> 之类的空容器,那么初始可见内容就是空的。
需要区分两种“可见”:
搜索引擎不收录,往往卡在第二种可见性上。但也不能断言所有不收录都是这个原因,抓取限制、重复内容、规范链接指向别处、页面被 noindex 标记,都会产生类似现象。所以第一步是确认现象,而不是直接改代码。
时间和人手有限时,按下面顺序做,最先排除影响最大的问题。
<meta name="robots" content="noindex">,以及 robots.txt 是否限制了相关路径。注意:robots.txt 的抓取限制不等于可靠的索引移除,它只阻止抓取,不保证页面从索引中消失;反过来,解除限制也不保证一定收录。完成这三步后,你会得到一张对照表:哪些内容初始就有,哪些只在渲染后出现。这张表决定了后续该改哪里。
如果对比发现内容只在渲染后出现,也不代表一定不被收录。不同搜索引擎对 JavaScript 渲染的支持程度、渲染时机和抓取预算不同,必须分别核查。可以确认的是:
因此,判断结果要分情况:
不要一上来就重写整个前端。按影响面和改动成本排序:
假设一个商品详情页的正文由接口返回,禁用 JavaScript 后源码里只有加载动画。这时优先做的不是加站点地图,而是让服务器在响应中直接带上商品名称、价格和描述。改动范围小,且对用户和抓取端都稳定。这个例子只说明判断逻辑,不代表任何真实项目结果。
选一个未被收录的动态页面,分别保存“禁用 JavaScript 的源码”和“渲染后的 DOM”,标出核心内容出现在哪一版。若核心内容只在渲染后出现,先改输出方式;若两版都有内容,则转向检查 noindex、规范链接和内部链接。把这次记录作为后续复查的基线,避免凭感觉反复提交网址。