頁面做改版、換目錄、調參數时,很容易留下一條甚至几條跳轉。對用戶来说,多跳一次几乎無感;對搜尋蜘蛛来说,每一次跳轉都是一次額外的請求,鏈條越長,被中途放弃的概率越高。
重定向為什么會影响收錄
重定向本身不是错誤,它是在告诉搜尋蜘蛛“這個地址的内容搬到那邊了”。問题在于它不算一次抓取完成:蜘蛛要先請求舊地址,拿到 3xx 响應和 Location 头,再對新地址發起一次請求。如果新地址又返回 3xx,那就繼續跳。
這带来两件事。一是抓取资源被消耗在跳轉上,同样的预算能拿到的内容變少;二是鏈路越長,中間任何一环出問题(超时、返回 5xx、跳到 404),蜘蛛就停在那里,最终頁面拿不到,或者被当成不可用處理。
先把鏈路長度查清楚
不要凭印象判断,實际查一遍更省時間:
- 用 curl -I 或浏览器的網絡面板跟随跳轉,看完整鏈路经過几個 3xx 才到 200。
- 看站内連結和導航里是否還有指向舊地址的入口。内鏈指向舊 URL,用戶和蜘蛛每次都要多跳一次。
- 看 sitemap 文件里列的是最终地址還是被重定向的地址。sitemap 里放舊 URL,等于主動把蜘蛛往跳轉鏈上带。
- 翻服務器日誌,篩選 3xx 狀態的請求,看哪些地址被反复抓取却始终没有走到 200。
几種常见的跳轉問题
鏈路過長
http 跳到 https,再去掉 www,再补末尾斜杠,再換目錄,叠起来就是三到四跳。理想情况下,從任意舊地址到最终頁面,一跳就够。
循环跳轉
A 跳 B、B 又跳回 A,蜘蛛永遠到不了终点,這類地址基本不會被收錄。日誌里同一個 URL 反复出現 3xx,值得怀疑。
跳到無關頁面
把下线的詳情頁统一 301 到首頁或栏目頁,短期看像是保住了什么,長期看這些地址容易被当成软 404 處理,用戶也拿不到想要的内容。内容确實不存在,410 或 404 更直接。
長期使用 302
302 是临时跳轉,蜘蛛會保留舊地址一段時間。如果迁移是永久的,就该用 301,让抓取和信号都轉到新地址上。
處理顺序建议
- 确定每個頁面的最终地址,並让這個地址直接返回 200。
- 把站内連結、導航和 sitemap 全部改成指向最终地址,减少後續产生跳轉的机會。
- 舊地址保留一跳,直接指向最终地址,不要串成鏈條。
- 检查最终頁面的 canonical 是否自指,避免出現“跳轉過去又被指回舊地址”的矛盾。
- 隔一到两周再看日誌,观察 3xx 請求是否下降、最终地址被抓取的次數是否上升。
重定向的目标不是消灭所有 3xx,而是让蜘蛛用最少的請求到達真正想被收錄的那個頁面。
跳轉鏈這類問题通常没法一次清干净,老站尤其如此。先處理被抓取最频繁的那几類地址,比重寫全站規則更快看到變化。收錄是结果,鏈路是否顺畅只是前提之一,頁面本身有没有值得保留的内容,仍然是更關键的那一环。