列表頁分頁看起来是最不起眼的一环:上一頁、下一頁、頁碼,做出来就能用。但当某個栏目积累到几千條内容、每頁只放十篇时,分頁就變成了一個需要單獨打理的模块。翻頁連結少寫一個參數,可能让蜘蛛在几百個几乎相同的頁面之間来回跑;頁碼算错一位,訪客想找半年前的文章會翻到失去耐心。
先確認分頁的真實 URL 形態
不同建站程序的翻頁地址差別很大,常见的有/list/2.html、/list?page=2、/list/page/2 以及带一堆附加參數的寫法。自查第一步是把第一頁到第五頁的地址逐個複製出来,去掉參數對比,看看變化的是哪一段。如果發現除了頁碼,還混進了排序方式、時間戳、會话 ID 之類的東西,那就要先想办法把多余參數清理掉,否則翻頁會派生出大量内容相同的地址。
分頁自查清單
- 越界頁碼:手動訪問第 9999 頁,看返回的是空列表、空白頁還是报错信息。理想情况是返回一個明确的狀態碼,而不是照常顯示“暂無内容”的 200 頁面。
- 頁碼上限:列表頁是否在文章只有 30 篇时也能翻到第 500 頁。如果能,說明頁數没有按實际内容量計算。
- 翻頁鏈路完整:每個頁碼是否都是普通連結,能被直接打開;不要只依赖点击後触發的脚本加载。
- 首尾頁處理:第一頁是否需要寫成 /list/1.html,還是直接指向栏目首頁,两種寫法最好只保留一種,避免同一頁出現两個地址。
- 排序稳定性:同一頁在两次刷新之間,内容顺序是否一致。如果按發布時間排序且存在大量同一時間發布的内容,顺序會漂移,翻頁时容易漏掉或重复看到某几篇。
- 篩選後的分頁:带條件的列表是否重新計算頁數,而不是沿用全量列表的頁數。
- 舊内容可達:最深處的那一頁是否還能通過连續点击到達,中間有没有断鏈。
分頁與蜘蛛抓取的關系
蜘蛛顺着翻頁一路往下走,本身是發現舊内容的正常途径。問题出在没有邊界的翻頁:当頁數可以無限增長、每頁又都挂着完整的翻頁條时,抓取资源會被消耗在大量结构相似的頁面上,真正需要更新的詳情頁反而排到了後面。比較稳妥的做法是让翻頁尽量呈現“少而准”的路径,而不是把几百個頁碼全部铺在頁面上。
分頁本身不是問题,無邊界的分頁才是。判断标准很简單:這些頁面里有没有訪客真正想看的獨立内容。
頁碼展示與可用性小细节
- 頁碼條不要一次性輸出几百個連結,超過一定數量後折叠,只保留首尾和目前頁附近。
- “上一頁”和“下一頁”在首尾頁應正确變灰或消失,不要仍然可点但跳回原頁。
- 翻頁後頁面标题中的頁碼要跟着更新,避免每一頁都是同一個标题。
- 翻到第 N 頁後,滚動位置應回到列表顶部,而不是停在頁面底部。
- 移動端的翻頁按钮要留出足够的点击区域,別让手指点中旁邊的連結。
把它放進定期复查里
分頁的問题往往不是一次改完就一劳永逸。栏目扩容、模板改版、排序規則調整,都可能让原本正常的翻頁出問题。建议每隔一段時間挑一個内容最多的栏目,從第一頁手動翻到最後一頁,记錄哪一頁開始出現重复、空白或顺序错乱,再回头對照上面的清單逐條核對。這件事花不了多久,但能省下不少排查“為什么這篇老文章一直没被抓到”的時間。