入口頁的 URL 看起来是小事,但蜘蛛在决定要不要爬、爬几次、算不算新頁面时,URL 结构往往是它最省力的判断依據之一。同一批連結,路径层級、命名方式和長短不同,蜘蛛理解起来的成本也不同。
层級:別让蜘蛛绕太多层
蜘蛛從入口頁走到目标頁,路径越短越容易跟到。常见做法是把連結放在离根目錄不超過两三层的位置,例如 /a/xxx 或 /list/xxx,而不是 /a/b/c/d/e/xxx。层級本身不會直接决定收錄,但在連結量很大时,它會放大“爬不完就放弃”的概率。
如果站点本身就是栏目化结构,可以让入口頁按栏目聚合,一個栏目一個目錄,目錄下再铺具体頁面。這样蜘蛛從栏目目錄頁就能一次看到一批連結,不用逐层下钻。
命名:可讀、稳定、別用纯随机串
URL 命名常见有三種做法,各有适用场景:
- 拼音或英文短语:可讀性好,人工排查方便,但別寫成一整句長句。
- 數字 ID:生成简單、天然唯一,缺点是看不出主题;如果站点已有 ID 体系,沿用它通常比重新造一套更稳。
- 随机字符串:唯一性最好,可讀性最差,出問题时在日誌里很难一眼認出是哪批頁面。
不管選哪種,關键是一套規則贯穿到底。今天用拼音、明天用 ID、後天換成哈希,會让蜘蛛反复把同一批内容当成新地址處理。
長度與字符:能短則短,能干净則干净
URL 太長不會直接導致抓不到,但會带来几個實际麻烦:日誌难讀、複製易错、部分中間环节對長度敏感。一般控制在几十個字符以内、路径段數不超過四五段,比較舒服。
字符方面,尽量只用小寫字母、數字和连字符。中文、空格和特殊符号虽然浏览器能顯示,编碼後會變成一長串百分号,既不美观也不利于人工核對。确實需要中文词时,统一轉成拼音或英文更省事。
几個容易被忽略的细节
- 末尾斜杠:/page 和 /page/ 在很多服務器上會当成两個地址,選一個並统一。
- 大小寫:/Page 和 /page 是否等價取决于服務器配置,统一小寫最省心。
- 扩展名:用 .html 還是不带扩展名都行,但同一個站内別混着来。
- 參數:排序、跟踪類參數能不寫就不寫,寫了就要考虑去重規則。
落地时可以按這個顺序检查
- 從入口頁出發數一數到目标頁要跳几次,超過三层的考虑合並目錄。
- 随机抽十條 URL,看命名規則是否一致,有没有大小寫和斜杠混用。
- 把 URL 放進日誌里,检查是否方便按目錄或前缀篩選、統計。
- 改動结构时,舊地址做好跳轉,不要直接切断。
URL 结构不是排名因素,但它决定了蜘蛛和运维人員讀這批頁面的成本。規則简單、長期不變,比追求某種所谓最優格式更有用。
最後提醒一点:調整 URL 结构属于批量改動,最好先在一小批入口頁上试,观察日誌里的抓取情况和狀態碼有没有異常,再决定是否全量铺開。