做 URL 投放时,常有人問:我在蜘蛛池里只放了一條地址,日誌里却看到搜尋蜘蛛用好几條不同的地址来抓同一個頁面,這算好事還是坏事?多數情况下,這既谈不上好事,也會让抓取變得低效。
多版本 URL 是怎么冒出来的
同一個頁面被解析成多個地址,通常不是有人故意為之,而是配置和歷史遗留叠加的结果:
- 协议與主机名不统一:http 與 https、带 www 與不带 www,几種组合都能打開同一個頁面。
- 结尾斜杠差异:带斜杠和不带斜杠的路径都返回 200。
- 大小寫與參數顺序:路径大小寫被服務器当成不同路径;跟踪參數前後顺序不同,也會生成新地址。
- 分頁、篩選、排序連結:列表頁的篩選條件容易批量产出近似地址。
- 内鏈寫法不一致:不同栏目、不同編輯寫出来的連結各不相同。
搜尋蜘蛛看到多個版本时會怎么處理
搜尋蜘蛛不具备“猜”的能力,它是按地址逐個抓取的。同一份内容出現多個地址时,通常會先分別抓取,再判断内容是否高度相似,然後自行選一個作為代表,其余的被折叠或降低處理優先級。
這個過程有两個副作用:一是抓取配額被同一份内容重复占用,本可以用于抓新 URL 的次數被消耗掉;二是指向该頁面的連結信号被拆散到多個地址上,每個地址分到的都變少了。
需要注意,去重是搜尋引擎自己的判断,不是你寫一句 canonical 就一定生效,也不是投放一次就必然被采纳。你能做的是把判断的分支尽量收窄。
先自查:站上到底有几個版本
- 用日誌或抓取工具,統計同一路径在不同协议、主机名、结尾斜杠、大小寫下返回的狀態碼。
- 看這些版本是不是都返回 200;如果做了跳轉,確認跳轉目标是否统一到同一個規范地址。
- 打開頁面源碼,看 canonical 寫的是哪個地址,是否與内鏈、sitemap 中出現的寫法一致。
- 抽查 sitemap 里是否存在同一頁面的多條记錄。
- 检查蜘蛛池投放的 URL,是否也用了同一套規范寫法。
把地址收敛起来的常见做法
- 跳轉统一:把非規范版本统一跳轉到唯一地址,且跳轉鏈路尽量只有一跳,不要 A 到 B 再到 C。
- canonical 對齐:頁面 canonical、sitemap、内鏈、外鏈、投放地址,尽量寫成同一個字符串。
- 參數收敛:跟踪類參數该忽略的忽略,別让它生成新的可訪問地址。
- 内鏈统一:在模板层统一連結寫法,比事後逐條修补省事得多。
- 投放地址统一:蜘蛛池里只放規范地址即可,不必把几個變体都投一遍。
几個容易被忽略的点
把多個變体都投放到蜘蛛池,並不會让頁面“被發現得更快”。多數时候只是让搜尋蜘蛛多抓几次同样的内容,規范地址那一次並不會因此提前。
- canonical 指向的地址如果本身返回 404 或處于跳轉中,等于把信号指向了空處。
- 移動端與 PC 端各有一套地址时,两邊的對應關系要寫對,不要互相指。
- 改版或換域名後,舊地址建议保留跳轉一段時間,而不是直接下线。
怎么判断收敛有没有效果
收敛之後不必天天盯,隔一段時間回看日誌即可:同一路径的變体訪問次數是否下降、規范地址的抓取是否更集中、sitemap 里的重复條目是否减少。這些變化是渐進的,通常不會在一两天内完成。
多版本 URL 本身不算致命問题,但它會持續消耗抓取资源,让新 URL 的發現节奏變慢。對做站点运营的人来说,把地址寫统一,是一件成本低、收益稳定的基础工作。