同一篇内容,在站内可能同时存在好几種網址寫法:大寫和小寫、带结尾斜杠和不带、带 www 和不带、加不加預設文件名。對訪問者来说它們都能打開頁面,但對搜尋蜘蛛来说,這可能是几個不同的 URL。發現入口一多,抓取與規范化的信号就被摊薄了。
常见的 URL 形態分叉
先把容易出問题的地方列一遍,逐項對照自己的站点。
- 大小寫:/About 與 /about 在部分服務器上指向同一文件,但在 URL 层面是两個地址。
- 结尾斜杠:带斜杠與不带斜杠被服務器当成两條路径處理时,就會多出一份入口。
- 預設頁文件名:目錄地址與目錄下加預設文件名都能訪問,連結寫法不统一就會分叉。
- 协议與主机名:http 與 https、带 www 與裸域,如果都能打開且没有统一跳轉,就是两套入口。
- 參數顺序與跟踪參數:參數顺序颠倒,以及 utm、from、spm 之類的来源标记,會生成大量近似 URL。
- 锚点與编碼:锚点通常不产生新頁面,但中文、空格被编碼成不同形式时,可能被当成不同地址。
多形態 URL 消耗的是什么
搜尋蜘蛛對每個站点的来訪次數是有限的。同一頁面用五種寫法被訪問,等于把本来可以用在別處的来訪次數花在了重复内容上。更麻烦的是内部連結不统一:導航指向一種寫法,正文指向另一種,Sitemap 里又是第三種,蜘蛛很难判断哪個才是你希望展示的版本。
形態分叉不會立刻带来明顯問题,它更像慢性消耗。單頁看不出来,站点規模一大,日誌里就會堆出大量近似 URL。
把入口收到規范形態上
目标很简單:每個頁面只保留一個規范 URL,其余形態用一次跳轉指過去,並且站内所有連結都寫成規范形態。
服務器层的统一
- 确定一種主机名,另一種做跳轉,不要两套並行。
- 全站切到 https 後,http 版本统一跳轉,避免長期共存。
- 大小寫與结尾斜杠各選一種規則,其余跳轉,注意別形成跳轉鏈。
- 預設頁文件名對外不可见,連結里不要寫出来。
頁面與連結层的统一
- 規范頁面加上 canonical,指向自己的唯一形態,不要指向中間的跳轉地址。
- 導航、面包屑、正文内鏈、相關推荐,全部按同一規則书寫。
- Sitemap 只放規范形態,不放會跳轉的地址,也不放带跟踪參數的地址。
- 站内搜尋、篩選、分享按钮生成的連結,尽量不让来源參數進入可抓取范围。
核對顺序
改完之後,按下面的顺序回头看一眼,比盲目改一堆規則更有效。
- 在服務器日誌里按路径統計,找出被搜尋蜘蛛抓取、但明顯指向同一内容的近似 URL。
- 抽查几十條内鏈,看它們實际寫的是哪種形態,重点看模板生成的部分。
- 用抓取工具抽查跳轉鏈,確認是一跳到規范地址,而不是两跳三跳。
- 確認 Sitemap 里的地址與最终落地地址完全一致,中間没有跳轉。
- 观察一段時間,比較近似 URL 在抓取记錄里的占比是否下降。
URL 形態统一是件琐碎的事,但它是 URL 發現路径的地基。地基理顺了,再讨论抓取深度、内鏈层級和抓取预算才有意义。