入口頁铺出去之後,URL 就是蜘蛛最先看到的東西。它不需要理解頁面内容,光看地址就能大致判断一批頁面是不是同一個模板批量生成的。所以 URL 结构不是美化問题,而是入口頁能不能被顺畅爬到、會不會被当成低质批量的實际問题。
為什么 URL 结构值得單獨拿出来说
蜘蛛的抓取是有顺序和预算的。它會先處理已经见過的域名和路径,再逐步扩展到新路径。如果一個域名下的 URL 毫無規律、层級混乱、參數一堆,蜘蛛在調度和去重时就會遇到更多麻烦,能分到每個頁面上的抓取机會也會被摊薄。
換句话说,URL 结构影响的是爬取效率,而不是内容质量本身。结构清楚的站点,蜘蛛少走弯路;结构混乱的站点,蜘蛛可能爬了几百條就停下。
目錄层級:浅一点,但不要全部平铺
常见的建议是层級越浅越好,但浅不等于把几千個頁面全塞在根目錄。根目錄全平铺會带来两個問题:一是文件名大量相似,二是後續要分類調整时無處下手。
- 两到三层比較稳妥,例如 /a/xxx 或 /news/2024/xxx 這類结构。
- 同一层級下的頁面主题尽量接近,方便蜘蛛理解路径含义。
- 避免出現 /1/、/2/ 這種纯數字且無規律的目錄,人工和蜘蛛都难判断归属。
URL 長度和可讀性
URL 太長、拼音缩寫堆叠、带一長串随机字符,都會降低可讀性。建议用短词或简短拼音,能看出大致主题即可。一個實用的判断方法:把 URL 複製给別人,對方能不能猜出這頁大概讲什么。
參數與静態化:能不带的參數就別带
带參數的 URL 本身没有問题,但在入口頁這種批量场景下,參數容易失控。同一個頁面通過不同參數组合能生成几十個地址,蜘蛛會把它当成不同頁面反复抓取,白白消耗抓取预算。
- 排序、篩選、来源追踪類參數尽量在入口頁里去掉,或者用 robots 規則、canonical 做收敛。
- 會话 ID、随机串這類參數不要出現在對外連結里。
- 伪静態不是必须的。静態化主要图個干净统一,如果只是把參數改寫成路径,底层仍然會跳轉,實际意义有限。
大小寫、结尾斜杠與多路径
這三種情况都會造成一個内容對應多個地址:/Page 和 /page、/abc 和 /abc/,以及同一頁同时挂在两個目錄下。入口頁批量生成时特別容易出現,建议在程序和服務器层面统一規則,例如统一小寫、统一不带结尾斜杠,再做 301 归一。
批量生成时最容易踩的坑
- URL 命名規律過于机械,比如全部是 /p/12345,一眼就能看出是批量产物。
- 為了凑數把不相關的内容挂到同一個目錄下,路径含义和内容對不上。
- 同一批入口頁重复指向同一個落地地址,URL 不同但内容完全相同。
- 上线後随意改路径,又没有做跳轉,導致老 URL 直接變成 404。
改 URL 之後要處理的事情
- 能保留舊路径就保留,必须改的话用 301 指向新地址,不要直接删。
- 更新 sitemap,让蜘蛛尽快知道新的地址集合。
- 观察一段時間的訪問日誌,看老 URL 是否還在被請求,判断跳轉有没有生效。
- 分批調整,不要一次把整個目錄结构推翻重来。
URL 结构决定不了内容好不好,但它决定了蜘蛛要花多少力气才能把你的頁面看明白。能少绕一個弯,就少绕一個弯。