遇到同一 URL 在手机与桌面、登录与未登录下返回不同内容时,不要先改页面,而要先把每条请求的完整证据固定下来。判断 360 收录该以哪一版为准,取决于差异是服务端按条件主动返回,还是前端在加载后二次改写。前者必须让搜索引擎抓取到与目标用户一致的那一版,后者通常不会改变初始 HTML,对照方式完全不同。
用无痕窗口和已登录窗口分别打开同一地址,查看“查看网页源代码”里的初始 HTML。如果两版源码的标题、正文、链接不同,差异来自服务端;如果源码一致,只是渲染后画面不同,差异来自前端脚本或本地存储。
这一步的结果决定后续动作:服务端差异要处理抓取条件与返回逻辑;前端差异要检查是否需要预渲染或静态输出,而不是直接改服务端模板。
准备一份对照记录,至少包含以下字段,并且每次只改变一个变量:
一个可执行的短例子:假设你维护一个商品页,未登录时返回价格和购买按钮,登录后隐藏价格。用桌面 UA 加登录 Cookie 请求时,源码里没有价格;用移动 UA 不带 Cookie 请求时,源码里有价格。此时可以确认差异由登录状态触发,而不是设备类型。下一步应检查 360 搜索蜘蛛访问时默认携带什么状态,并决定是否对搜索引擎返回未登录版本。
如果请求工具返回 403 或跳转到验证页,这不能直接证明页面被屏蔽,也可能是频率限制、IP 归属或缺少必要请求头。需要换时间、换出口再测一次,才能判断。
第一种做法是让搜索引擎始终抓取未登录版本,登录用户看到个性化内容。适用条件是:未登录版本已经包含页面主题所需的核心信息,登录后只是增强功能。代价是登录用户看到的页面与搜索快照不一致,如果核心内容只在登录后出现,搜索端可能拿不到有效正文。
第二种做法是对搜索引擎和未登录用户返回同一版完整内容,把个性化放到前端异步加载。适用条件是:服务端可以稳定输出完整 HTML,前端差异不影响主题判断。代价是开发改动更大,且要防止异步内容覆盖初始标题和正文。
选择依据不是哪种更“规范”,而是核心内容是否必须在初始 HTML 中出现。如果必须出现,选第二种;如果核心内容本来就在未登录版里,选第一种并接受快照与登录态的差异。
确定差异来源后,只改一个条件并记录改动前后的请求结果。例如,决定对 360 搜索蜘蛛返回未登录版本,就在服务端条件判断中增加对应用户代理分支,然后用相同请求工具重新抓取,对比 title、h1 和正文片段是否与未登录版一致。
改动后如果抓取结果仍然不同,先检查是否有 CDN、缓存层或前端脚本在服务端返回之后再次改写内容。不要因为一次抓取结果变化就断定收录会立刻变化;收录状态还受抓取预算、页面质量和索引策略影响,请求结果一致只是必要条件,不是充分条件。
用 robots.txt 限制某个路径,不等于该地址会从索引中移除;它只约束抓取行为,已收录页面仍可能保留一段时间。站点地图列出地址也不保证被收录。HTTPS 同样不保证页面安全或获得更好排名。
如果同一地址的差异来自登录状态,而你又无法让搜索引擎稳定抓取目标版本,可以考虑把需要登录才能看到的内容放到独立 URL,并确保该 URL 返回完整初始 HTML。是否这样做,取决于该内容是否值得单独被搜索到,以及维护两套地址的成本是否可接受。
对照时还要区分“内容不同”和“展示不同”。同一份 HTML 在手机和桌面只是 CSS 布局不同,不属于需要处理的差异;只有初始 HTML 中的文本、链接、标题发生实质变化,才需要按上面的步骤继续排查。