在蜘蛛池的入口页里,除了常见的 a 标签,还有两种写法经常被用来把蜘蛛送过去:一种是在 head 里写 meta refresh,让页面自动跳到目标地址;另一种是用 iframe 把目标页面嵌进入口页。这两种写法到底能不能被搜索蜘蛛跟进,是很多站点运营者反复问的问题。
先把结论放在前面
普通的 a 标签链接是相对稳定、可控的发现路径。meta refresh 和 iframe 属于“部分情况下有效”的写法:能不能被跟进、跟进后如何计算,取决于搜索引擎的实现细节,而且这两种方式都没有合适的位置去附加锚文本、nofollow 或 rel 属性,后续做调整的空间很小。把它们当备用手段可以,当主力手段则不确定性偏高。
meta refresh:多数蜘蛛会读,但延迟是变量
meta refresh 写在 HTML 的 head 区域,蜘蛛解析页面时有机会读到目标地址,因此相比纯 JS 跳转,被发现的概率更高。但有几个细节会影响结果:
- 延迟时间:写成 content="0;url=..." 的立即跳转,通常比 content="5;url=..." 更容易被处理。延迟越长,蜘蛛越可能直接放弃等待。
- 跳转层数:入口页跳 A、A 再跳 B、B 再跳目标,层数越多,中间被截断的概率越大。建议一层直达。
- 目标地址的状态码:即使跳转被读到,目标 URL 如果返回 404、503 或需要登录,抓取依然会停在那里,这跟跳转写法无关。
还有一个常被忽略的点:meta refresh 属于整页替换。入口页上如果还挂着其他目标链接,这些链接很可能还没来得及被处理,页面就已经跳走了。
iframe:能读到 src,但内容归属容易混乱
iframe 把目标页面作为独立文档加载,蜘蛛在解析入口页时能看到 iframe 的 src,也有机会去抓这个地址。问题主要在三处:
- iframe 内的内容被视为另一个页面,入口页并不会因此获得这部分内容,指望靠 iframe 做内容聚合通常不成立。
- 如果 iframe 的 src 指向同域页面,蜘蛛的判断会更保守;跨域 iframe 被直接抓取的比例同样不高。
- 很多站点的 iframe 是靠 JS 动态插入的,这种情况下蜘蛛连 src 都读不到,效果跟直接用 JS 写链接没有区别。
确实只能用这两种写法时,可以做几件事
- 在入口页正文里额外放一条普通的 a 标签指向同一个目标 URL,让路径不只依赖跳转。
- 把跳转层数压到一层,meta refresh 的延迟设为 0。
- 如果目标 URL 本身对搜索结果有价值,考虑直接通过 sitemap 提交,而不是绕道入口页。
- 定期查看服务器日志,确认目标 URL 有没有出现蜘蛛的 User-agent 和 200 状态码。没有记录,就说明这条路没走通。
判断标准其实很简单:入口页怎么写都行,最终要看的是目标 URL 在日志里有没有被抓取记录。没有日志证据的“应该能抓到”,都只是猜测。
顺带说一个常见的错位
不少入口页把跳转和点击按钮混在一起:页面上是一个“点击进入”的按钮,跳转逻辑写在 onclick 里。这种写法蜘蛛基本不会执行,效果等同于目标 URL 没有被链接。如果只是想要按钮样式,用 a 标签加 CSS 做视觉即可,不要让 onclick 承载地址。
总结一下:meta refresh 和 iframe 不是不能用,但它们属于不透明的写法,你无法从页面本身判断蜘蛛有没有跟进,只能靠日志验证。站点运营中,能用 a 标签解决的事情,尽量不要用跳转或嵌套去替代。