在蜘蛛池的入口頁里,除了常见的 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 标簽解决的事情,尽量不要用跳轉或嵌套去替代。