做站久了,重定向几乎不可避免:換域名、改目錄、合並栏目、下线活動頁,都會用到 301 或 302。單次跳轉本身没問题,麻烦的是跳轉一层套一层,或者規則用错了地方。這類問题用戶感知不强,但會實打實地消耗蜘蛛的抓取配額,也让權重在传递過程中被稀释。
跳轉鏈是怎么變長的
最常见的情况是歷史遗留。比如 A 頁 301 到 B 頁,後来 B 頁又被合並到 C 頁,但 A 的規則没人改,于是訪問 A 就變成 A→B→C 两次跳轉。改版次數越多,鏈條越長,有些站点甚至要五六跳才落到最终頁面。
几個容易被忽略的問题
用 302 代替 301
临时跳轉和永久跳轉的语义不同。如果确定某個地址以後不再使用,就應该用 301;長期挂着 302,蜘蛛會一直把原地址当作有效地址反复回訪,新地址的收錄节奏也會被拖慢。
跳轉到首頁或無關頁面
頁面下线後,為了省事直接跳到首頁,是很常见的做法。用戶点進来發現内容和预期完全不符,跳出率會很高;蜘蛛也會認為這個地址的指向不稳定。更好的做法是跳到最相關的新頁面,實在没有對應内容,就正常返回 404 或 410。
跳轉和 canonical 打架
有的頁面一邊寫着 canonical 指向 B,一邊又用 301 跳到 C。两種信号互相矛盾,蜘蛛只能自己猜。規范做法是只保留一種明确指向,其余重复地址统一跳過去。
跳轉鏈里混入參數或大小寫變体
例如带 www 和不带 www 混用,http 和 https 混用,末尾斜杠忽有忽無。每一種變体都可能自成一條鏈。先把站点的主域形式定下来,再让其他形式一次性跳過去,別再层层轉。
自查可以按這几步走
- 從服務器日誌或爬虫工具里,找出返回 301、302 的 URL 清單,重点關注訪問量高、被連結多的頁面。
- 對每個跳轉地址手動或批量跟一次,记錄跳轉次數和最终落地頁。
- 跳轉超過一跳的,把中間环节改成直接指向终点。
- 检查跳轉目标是否與頁面主题相關,是否與 canonical 冲突。
- 確認协议、域名、路径大小寫、末尾斜杠是否统一。
- 改完之後再跑一遍,观察日誌里是否還出現老的跳轉记錄。
维護上的两個小习惯
一是把重定向規則集中管理,別散落在配置文件、CDN、應用代碼好几處,改的时候容易漏。二是给規則加注释,寫清楚谁在什么时候因為什么加的,半年後回头看還能看懂。
跳轉不是越多越好,也不是越快越好。目标很简單:让用戶和蜘蛛都用最少的步數,到達那個真正有内容的地址。
這類检查不需要多高深的技術,隔一段時間花半小时跑一遍,就能避免很多“頁面明明存在却一直没被收錄”的疑惑。至少,別让一次本该一步到位的跳轉,拖成谁也说不清终点的连环跳。