百度 AngularJS SEO 入门:新手实战优化指南
为什么 AngularJS 网站在百度经常收录不好
很多新手第一次用 AngularJS 做完网站,兴冲冲地提交给百度,结果等了好几周,site 一下域名,收录页面寥寥无几,甚至只有一个首页。问题往往不在于你的内容质量,而在于 AngularJS 是典型的单页应用(SPA),页面内容大多是浏览器加载完 JavaScript 之后,才动态渲染出来的。
传统搜索引擎蜘蛛抓取网页时,拿到的是服务器返回的原始 HTML。对 AngularJS 站点来说,这份原始 HTML 往往只是一个空壳,真正的文字、标题、列表都还没生成。百度蜘蛛对 JavaScript 的执行能力一直比较有限,很多时候它看到的就是一个几乎空白的页面,自然没什么可收录的。
先搞清楚百度蜘蛛到底看到了什么
在动手优化之前,新手最该做的一件事,是站在蜘蛛的视角看看你的页面。方法其实很简单:
- 在浏览器里打开页面,右键选择"查看网页源代码"(注意不是"检查/审查元素")。源代码是服务器最初返回的内容,审查元素看到的是渲染后的结果,两者经常差别巨大。
- 如果源代码里几乎找不到正文和标题文字,只有一堆 script 标签和空容器,那说明你的内容完全依赖前端渲染,蜘蛛大概率抓不到。
- 再用百度搜索资源平台里的抓取诊断工具,看看百度实际抓到的内容长什么样,这比自己凭感觉猜测靠谱得多。
把"蜘蛛看到的"和"用户看到的"这两件事分开理解,是做 SPA 优化的第一步,也是最关键的一步。
新手可以落地的几种优化方案
解决思路其实只有一个核心:想办法让蜘蛛在第一时间就拿到带有完整内容的 HTML。具体做法有下面几种,可以根据自己的技术能力和项目情况来选。
方案一:服务端渲染(SSR)
服务端渲染的意思是,在服务器端就把页面内容拼装成完整 HTML,再返回给浏览器和蜘蛛。这样蜘蛛一进来就能读到实实在在的文字,收录友好度最高。缺点是 AngularJS 1.x 时代对 SSR 的支持本就不算好,改造成本偏高。如果是全新项目,其实更建议直接选用对 SSR 支持更成熟的现代框架;对老项目而言,SSR 往往意味着一次较大的重构。
方案二:预渲染(Prerender)
对大多数新手来说,预渲染是性价比最高的折中方案。它的原理是:用一个无头浏览器(比如基于 Puppeteer 的方案,或 Rendertron 这类工具)在后台把页面渲染成静态 HTML 快照,当检测到来访的是搜索引擎蜘蛛时,就把这份静态快照返回给它,普通用户访问则照常走前端渲染。
- 好处是几乎不用改动原有前端代码,接入相对轻量,适合快速见效。
- 要注意快照的更新机制,内容更新后旧快照必须能及时刷新,否则蜘蛛抓到的是过期内容。
- 返回给蜘蛛的快照,内容必须和用户看到的一致。千万别动"给蜘蛛一套、给用户另一套"的歪脑筋,这属于作弊,很容易被惩罚。
方案三:处理好路由和 URL
AngularJS 默认路由会带一个井号,形如 /#/page 这样的地址。早期有一套基于井号叹号配合 escaped_fragment 的抓取约定,但如今已经过时,不建议再依赖。更推荐开启 HTML5 的 history 模式,让 URL 变成 /page 这种干净的形式,同时在服务器端做好对应配置,保证用户直接访问这些地址时能正确返回页面,而不是报 404。
这些基础 SEO 细节,新手最容易漏掉
解决了渲染问题,别忘了常规的 SEO 基本功,SPA 站点在这些地方尤其容易翻车:
- 每个页面要有独立且准确的标题(title)和描述(meta description)。SPA 切换路由时,记得用代码动态更新这两项,而不是所有页面共用首页的标题。
- 合理使用 h1、h2 等标题标签,让页面有清晰的层级结构,别整个页面全是 div。
- 准备一份 sitemap.xml,把希望被收录的重要页面都列进去,并在百度搜索资源平台提交。
- 配置好 robots.txt,别不小心把整站或关键目录给屏蔽了,这种低级失误其实并不少见。
- 图片加上 alt 描述,内部链接用真实可点击的 a 标签,方便蜘蛛顺着链接爬到更多页面。
上线之后怎么验证和持续优化
优化不是做完就完事,上线后要养成定期检查的习惯,可以从这几件事入手:
- 用百度搜索资源平台的抓取诊断,确认蜘蛛现在能正常读到完整内容。
- 主动提交链接,加快新页面被发现的速度;有条件的话,也可以关注平台是否支持更快的收录能力。
- 定期用 site 指令观察收录数量的变化趋势,配合后台的抓取频次、索引量数据一起看。
- 发现某些页面迟迟不收录,就回过头检查它的源代码内容是否完整、标题是否重复、有没有被 robots 挡住。
总的来说,百度 AngularJS SEO 的难点不在于多高深的技巧,而在于理解"蜘蛛拿到的是原始 HTML"这个底层逻辑。只要想办法让蜘蛛第一时间读到完整内容,再把标题、sitemap、robots 这些基本功做扎实,剩下的就是耐心观察、持续调整。新手不必追求一步到位,先从查看源代码和抓取诊断开始,一步一步来,收录情况通常都能慢慢改善。