入口页为了排版、样式隔离,或者图方便批量替换,有时会把目标 URL 塞进 iframe 里。这样一来,页面上肉眼能看到的链接,在 HTML 源码里只是一个 iframe 标签。搜索蜘蛛到底会不会顺着 iframe 进去,就成了一个常见疑问。
搜索蜘蛛是怎么看待 iframe 的
主流搜索引擎对 iframe 的处理,大致可以概括成几点:
- iframe 的 src 本身是一个 URL,会被当作页面上的一个资源去请求,这一点和图片、脚本类似。
- iframe 内部加载的文档,通常被当成一个独立页面处理,里面的 a 标签属于那个文档,而不是外层入口页。
- 外层页面与 iframe 内部文档之间的链接传递,比正文里的普通 a 标签弱得多,跨域 iframe、多层嵌套 iframe 尤其明显。
- src 由 JavaScript 动态写入,或者需要滚动、点击才加载的 iframe,被发现和抓取的概率会进一步下降。
所以,iframe 里的目标 URL 并不是绝对发现不了,但它是一条明显更脆弱的通路,不适合当作主要手段。
哪些写法会让 iframe 里的链接基本白搭
- src 靠脚本拼接,或者等 DOM 加载完再赋值,抓取时 iframe 还是空的。
- iframe 里再套 iframe,或者 iframe 指向一个需要 JS 渲染才能出链接的页面。
- iframe 加载的文档本身带抓取限制,或者返回 404、软 404、频繁跳转。
- iframe 里的链接加了 nofollow,或者外层入口页整体状态就不正常。
- 一个 iframe 里塞几十上百条链接,又开着懒加载,实际请求到的可能只有前几条。
如果一定要用 iframe,可以做稳一点
- src 写成静态的、可以直接访问的 URL,不要依赖脚本生成。
- 每个 iframe 里控制链接数量,几条到十几条即可,别堆成链接墙。
- 同时在外层入口页正文里保留一份普通 a 标签,让发现路径不只依赖 iframe。
- 不要设置到让 iframe 无法正常加载,也不要让它尺寸为 0,导致浏览器压根不发起请求。
- 定期看服务器日志里有没有针对 iframe src 的抓取请求,有请求也不代表里面的链接都被跟了。
更省心的替代方案
如果目的只是让搜索蜘蛛发现目标 URL,普通 a 标签仍然是最直接的方式:链接写在 HTML 源码里、href 指向真实可访问的地址、数量适中、入口页之间有些内容差异。再配合 sitemap 和可用的提交接口,就形成多条互相不依赖的发现路径,比单独押注 iframe 可靠得多。
发现只是第一步。目标 URL 被请求到之后,还要看它自身的状态码、内容质量和更新情况,才谈得上后续的收录表现,这一点不要寄望于入口页的写法能解决。
怎么验证 iframe 这条路有没有生效
比较实用的做法是做个小对照:同一批目标 URL,一组只放在 iframe 里,一组放在正文 a 标签里,观察一段时间内两类 URL 在抓取日志中的请求数量差异。如果 iframe 那一组的请求量长期接近于零,说明这条通路在你现在的场景下基本没被采用,早点换回普通链接更划算。