入口頁的 URL 形態,為什么值得單獨说
蜘蛛池的作用是让搜尋引擎蜘蛛持續發現並訪問一批入口 URL。如果同一個頁面存在多種 URL 寫法,蜘蛛很可能把它們当成不同地址反复抓取:日誌里的請求數看着不少,實际訪問的却是同一份内容。這既占用了抓取額度,也让後面判断抓取情况时看不出真實面貌。
URL 归一不是為了让地址好看,而是為了让蜘蛛的每一次請求都落在真實存在的頁面上。
參數:能不带就不带
參數是最常见的重复来源。同一個入口頁,挂在不同的查询串後面,對蜘蛛来说就是不同的 URL。
- 跟踪參數:utm_source、from、ref 這類用于統計或标记来源的參數,最好只出現在對外推廣連結里,不要寫進頁面内鏈和 sitemap。
- 排序與篩選參數:?sort=、?page= 這類可以组合出大量變体。如果這些變体頁面主体内容基本相同,考虑用 robots 或 canonical 收敛,而不是任由它們铺開。
- 纯前端狀態參數:只為交互服務的參數,尽量改成路径片段,或者干脆去掉。
判断标准很简單:這個參數換個值,頁面主体内容是否真的不同?答案是否,就不该让它成為一個可獨立抓取的地址。
大小寫與结尾斜杠
服務器和部分 CDN 對大小寫敏感,/Entry/ 與 /entry/ 可能對應两份缓存,也可能指向同一份内容。结尾斜杠同理:/page 和 /page/ 在不少配置下會各返回一次 200。
處理方式選一種坚持到底即可:
- 在服務器层做 301 归一,把變体统一跳到選定寫法;
- 頁面内所有連結、sitemap、跳轉目标统一使用同一寫法,不给蜘蛛發現變体的机會。
两種方式可以叠加,但不要一邊做 301、一邊又在模板里輸出另一種寫法,否則等于自己制造新的變体。
URL 编碼與特殊字符
中文、空格、百分号编碼在不同环节容易出岔子。建议入口頁路径尽量使用小寫英文加连字符,避開中文路径、空格以及需要二次编碼的字符。如果确實要用,确保内鏈、跳轉、sitemap 三處的编碼方式一致,不要一處用原始字符、一處用 %E4%B8%AD 這样的形式。编碼不一致时,蜘蛛會把它們视為两個地址,抓两次,讀到的却是同一頁。
内鏈一致性是成本最低的收敛手段
蜘蛛顺着連結走。如果同一個入口頁在站内被三種寫法連結過,等于主動告诉蜘蛛這里有三個頁面。把導航、列表頁、正文内鏈、面包屑里的 URL 统一成一種寫法,往往比逐頁調整内容更快见效,改模板通常比改内容省事。
一個可以照着走的检查顺序
- 從抓取日誌里提取被訪問的入口 URL,去掉查询串後統計重复情况。
- 把重复度高的地址挑出来,確認是參數、大小寫還是斜杠造成的。
- 先在服務器层做 301 或统一規則,再回头改模板里的連結寫法。
- 更新 sitemap,只保留归一後的地址。
- 過一段時間再從日誌核對,看變体請求是否减少。
請求數下降不一定代表抓取變差,很多时候只是把重复的那部分挤掉了。真正要看的是归一後的地址有没有被稳定訪問。
容易踩的几個坑
- 只加 canonical 而不改内鏈:蜘蛛仍會反复抓取變体,只是信号被合並,日誌里的無效請求依然存在。
- 301 鏈太長:A 跳 B 再跳 C,蜘蛛跟到中途可能就停止,直接跳到最终地址更稳妥。
- 改完马上要结论:抓取习惯的調整需要時間,观察窗口太短容易誤判方向。
把這些细节固化成模板規范之後,入口頁的维護會轻松很多——新增一批 URL 时,不必再逐個检查寫法,也更容易從日誌里看清哪些地址真正被蜘蛛接受。