入口頁的 URL 是蜘蛛進入蜘蛛池後最先接触的信息之一。它不像頁面内容那样顯眼,却會影响蜘蛛是否愿意繼續爬、會不會重复抓同一批地址,以及後期看日誌时能不能快速判断問题。入口頁數量一多,URL 设計上的小毛病會被放大,所以值得在搭建阶段就定好規則。
先定入口頁的 URL 形態
入口頁通常不需要复杂路径。建议保持短、稳定、可讀,层級控制在两到三层。比如用 /topic/abc/ 這類目錄加短标识,比一長串參數更容易被蜘蛛理解和记錄。扩展名不是關键,.html 和目錄形式都可以,但同一個池子里尽量统一,减少無意义的差异。
- 层級尽量浅,入口頁不要藏在五六层目錄之後。
- 用目錄表達分類,而不是把分類信息全塞進參數。
- 除非内容真的按時間归档,否則不要用時間戳做唯一标识。
參數怎么處理
入口頁最好不要用參數来区分内容。如果业務上必须保留參數,要把參數數量控制住,固定顺序,並且避免蜘蛛穷举组合。篩選、排序、分頁、跟踪這几類參數最容易出問题,處理方式也不一样。
- 篩選參數:如果頁面内容重复度高,考虑 robots 屏蔽或 canonical 归並,不要在所有入口頁都放出篩選連結。
- 排序參數:只保留一個預設排序,或者把排序值寫死,別让蜘蛛抓到大量僅排序不同的 URL。
- 分頁參數:能用路径式 /page/2/ 就少用 ?p=2,參數越少越稳。
- 跟踪參數:utm 之類的參數不要出現在蜘蛛可抓的連結里,入口頁自身也不應带這些參數。
命名與大小寫
命名上,统一小寫、用短横线分词,避免大小寫混用和下划线、短横线混用。如果入口頁需要唯一 ID,把 ID 放在路径末尾,前面保留可讀前缀,這样日誌里也能看出頁面大致属于哪一批。随机字符串不是不能用,但會让後續排查變慢。
URL 是蜘蛛讀到的第一层信息,稳定、可讀、少變化,比花哨的命名更有用。
去重與 canonical
同一份内容如果出現多個 URL,蜘蛛會分別抓取,抓取预算就被分薄。入口頁之間尤其容易出現這種情况:带 www 和不带 www、带尾斜杠和不带尾斜杠、大小寫不同、參數顺序不同,都可能被当成不同地址。處理时,先用 301 把變体归到主地址;不能跳轉的,再用 canonical 指向主入口頁。注意別在入口頁之間互相 canonical 成环,那样蜘蛛很难判断哪個是主版本。
和 sitemap、robots 的配合
sitemap 只放希望被發現的入口頁 URL,不要一邊在 sitemap 里提交參數頁,一邊又在 robots 里屏蔽同一批地址。robots 用来挡住不该抓的參數路径,sitemap 用来提交干净的主入口頁,两者分工要清楚。如果入口頁有轮換,舊 URL 失效後最好 301 到新地址,不要直接留一堆 404。
一份可落地的检查清單
- 检查是否存在僅大小寫不同的重复 URL。
- 检查參數组合是否可以被蜘蛛穷举,尤其是篩選和排序。
- 检查入口頁是否返回 200,canonical 是否指向自身或正确的主版本。
- 检查蜘蛛是否在參數頁、排序頁上反复空轉。
- 检查 URL 變更後是否有 301,而不是直接 404。
- 检查 sitemap 和 robots 是否互相矛盾。
URL 结构不是搭完就不用管的事。入口頁轮換、頁面改版、域名迁移之後,都要重新過一遍這些規則。稳定的 URL 不會直接带来收錄,但能减少蜘蛛空跑,让日誌更好讀,也让後續調整有據可依。