很多站点在入口頁放目标連結时,URL 後面會顺手带上參數,比如 ?from=entry、?id=123&utm_source=xxx。运营者常担心:同一個頁面只是參數不同,搜尋蜘蛛會不會把它当成一大堆新 URL,反复抓取、把配額分散掉?答案是有可能,但具体结果取决于參數怎么寫、頁面怎么响應。
搜尋蜘蛛判断“是不是新 URL”的基本逻辑
搜尋蜘蛛拿到連結时,先做的是 URL 层面的比較:域名、路径、查询字符串(問号後面的部分)只要有一處不同,通常就會被视為一個獨立 URL,排進抓取队列。它不會先打開頁面再判断“這其實是同一個頁面”。
也就是说,參數不同的 URL 預設會被当成不同 URL 對待。至于會不會真的被大量抓取,還要看後面几道關口:robots.txt 是否禁止、頁面是否返回 200、有没有 canonical 指向別處、以及其他頁面對它的引用情况。
几種常见參數场景,结果差別很大
- 只差 utm_ 之類的营销跟踪參數:這類參數不影响内容,搜尋蜘蛛一般能识別其性质,抓取意愿相對低,但並不是完全不抓。
- 差的是内容相關參數(?id=123、?page=2):不同參數确實對應不同内容,被抓取是正常且合理的。
- 參數是随机值或時間戳:每次生成都不一样,相当于给搜尋蜘蛛造出無穷多個 URL,最容易造成抓取浪費。
- 參數顺序不同(?a=1&b=2 與 ?b=2&a=1):内容其實一样,但 URL 不同,容易被当成两個地址處理。
真正的問题不是“被抓取”,而是“抓了不划算”
參數 URL 被搜尋蜘蛛發現本身不一定是坏事。麻烦通常出在两個地方:
- 配額被占用。站点的抓取预算有限,如果大量抓取發生在無意义參數 URL 上,真正需要更新的頁面就會被排到後面。
- 重复内容。同一份内容對應多個 URL,收錄结果里可能出現多個版本,權重和展示資料都不容易集中。
入口頁放參數連結时的處理思路
比較稳妥的做法是先分清楚:哪些參數是必要的,哪些只是統計用的。
1. 先做 URL 規范化
對确定不需要單獨抓取、也不贡献内容的參數,统一成一種标准寫法,並在頁面 head 里用 canonical 指向标准 URL。這样即使搜尋蜘蛛抓到了带參數的版本,也有机會把信号合並到規范地址上。
2. 用 robots.txt 或參數工具做收敛
對纯統計類參數,可以在 robots.txt 里寫 Disallow 規則;如果站点後台有參數處理相關設定,也可以把這類參數标记為不抓取或代表 URL。注意不要一刀切屏蔽全部參數,否則真正有内容的列表頁、分頁也會被一起挡住。
3. 入口頁里的連結尽量寫干净地址
入口頁是搜尋蜘蛛發現 URL 的主要入口,寫在上面的連結最好就是希望被抓取的那個标准 URL。跟踪參數交给前端脚本或跳轉逻辑去补,不要直接寫死在 HTML 的 href 里。
4. 別让參數變成随机數
如果連結里的參數每次刷新都變(比如带時間戳、随机 session id),搜尋蜘蛛每次抓到的都是“新 URL”,很容易形成抓取黑洞。這類連結不要放在入口頁對外暴露的位置。
排查时可以看這几個信号
- 抓取日誌里,訪問量是否大量集中在某几種參數组合上。
- 搜尋结果里,同一個頁面是否有多個參數版本同时出現。
- 服務器日誌中,同一路径被不同參數反复抓取的频率與間隔。
- 目标頁面的收錄情况,是否被參數頁分走了本该属于它的流量。
參數並不等于坏東西,關键是有没有给它一個明确的身份:要么它是内容的一部分,要么它就该被收敛掉。入口頁上寫什么連結,往往就决定了搜尋蜘蛛把抓取花在哪里。
總结一下:带參數的 URL 會被搜尋蜘蛛当成獨立 URL 處理,是否值得抓取取决于參數有没有實际意义。把必要參數規范化、把無效參數收敛掉、入口頁上直接寫标准地址,比等收錄出問题後再补救要省事得多。