我是吳承學,做了二十年 SEO。如果你問我電商站裡最容易失控、也最容易被忽略的技術問題是什麼,我幾乎每次都會回答:篩選頁,也就是所謂的 faceted navigation。使用者按幾個篩選條件,網址就多出一組參數,一個有十幾個篩選項的分類,理論上能生出成千上萬種網址組合。這些頁面多半內容很薄、彼此重複,卻大量被搜尋引擎抓取,稀釋整站評價、吃掉爬蟲預算。這篇談的就是怎麼用 canonical、noindex 與內容策略,把這團亂收拾乾淨。
1. 我為什麼把篩選頁當成整站的隱形破口
篩選頁的問題在於它「無中生有」。你原本規劃了幾百個分類頁,結果篩選功能一開,網址組合暴增到六位數,而這些頁面沒有一個是你刻意規劃、想拿去排名的。它們就這樣悄悄膨脹,等你發現時,索引裡已經塞滿了一堆薄頁。
1.1 一個篩選功能,能生出多少種網址
假設一個分類有顏色、尺寸、價格區間、品牌四種篩選,每種各五個選項,光是單選組合就有幾十種,允許複選再排列組合,數量是好幾個數量級的成長。我看過一個賣服飾的購物網站,實際規劃的分類不到三百個,搜尋引擎卻抓到超過二十萬個網址,多出來的全是篩選參數的排列。爬蟲的抓取資源是有限的,它忙著抓這些沒價值的組合,真正重要的商品頁反而被排到後面。
1.2 薄頁與重複,怎麼拖累整站評價
這些篩選頁大多有兩個毛病。一是薄:某個冷門條件組合底下只有一兩件商品,內容單薄。二是重複:「紅色 M 號」和「M 號 紅色」其實是同一批商品,只是參數順序不同,卻是兩個網址。搜尋引擎面對大量薄頁與近乎重複的頁面,會對整站的內容品質打折。換句話說,這些你根本不想要的頁面,反而在扯你想要的頁面後腿。
1.3 先分清楚:哪些篩選頁值得留、哪些該擋
處理篩選頁的第一步不是急著設 noindex,而是分類。有些篩選組合其實有明確搜尋需求,例如「防水 運動耳機」這種屬性組合,值得整理成正式的著陸頁去承接;有些純粹是使用者站內操作的過程,例如「價格 500 到 800、依上架時間排序」,沒有人會去搜,就該擋在索引之外。分清楚這兩類,後面的處理才不會一刀切錯。
2. canonical、noindex、robots,各自的分工
處理篩選頁有三個常用工具,很多人搞混它們的作用,用錯反而製造新問題。我先把它們的分工講清楚。
2.1 canonical 是「這頁的內容以哪個網址為準」
canonical 適合用在「內容實質相同、只是網址不同」的情況。像參數順序不同、或加了排序參數但商品清單其實一樣的頁面,我會讓它們的 canonical 指向那個乾淨的、代表性的分類網址,把重複的權重集中回主網址。要注意 canonical 是給搜尋引擎的建議、不是強制指令,而且被指向的頁面內容要跟來源夠接近,否則搜尋引擎可能不理會你的指定。
2.2 noindex 是「這頁別放進搜尋結果」
noindex 適合用在「這頁確實存在、使用者也會用,但你不希望它出現在搜尋結果」的情況,例如多重篩選疊加出來的薄頁組合。設了 noindex,頁面還是能被抓取、爬蟲仍會順著上面的連結走,只是不收進索引。這跟 canonical 是兩回事:canonical 是合併權重、noindex 是排除收錄。同一頁不要既設 noindex 又用 canonical 指向別頁,這兩個訊號會互相打架。
2.3 robots.txt 擋抓取,但擋不掉已收錄的頁
robots.txt 是控制「要不要抓取」,不是控制「要不要收錄」。這是最常被誤用的一個。如果你用 robots.txt 擋掉某個參數路徑,爬蟲確實不會去抓,但它也因此讀不到那頁上的 noindex,萬一那頁已經因為外部連結被收錄,反而更難把它移出索引。所以想讓一頁「不被收錄」,正確做法是讓爬蟲抓得到、並在頁面上讀到 noindex,而不是用 robots.txt 一擋了事。
2.4 三種工具的適用情境對照
| 工具 | 作用 | 適合情境 | 常見誤用 |
|---|---|---|---|
| canonical | 指定代表網址、合併權重 | 內容實質相同、參數或排序不同 | 指向內容差很多的頁面 |
| noindex | 排除於搜尋結果之外 | 使用者會用、但無搜尋價值的薄頁 | 同時又用 robots.txt 擋抓取 |
| robots.txt | 阻止抓取 | 純站內功能路徑、確定不需被讀到 | 用它處理已收錄頁面 |
| 整理成著陸頁 | 正式承接搜尋需求 | 有明確搜尋量的屬性組合 | 把所有組合都當著陸頁 |
3. 我實際上怎麼替一個電商站設定篩選頁規則
工具講完,講實作。我做這件事有一套固定流程,避免漏掉或誤傷正常頁面。
3.1 先用資料找出「有人搜、值得留」的組合
我會從關鍵字工具與站內搜尋紀錄裡,撈出使用者真的會搜的屬性組合。有一次幫一個賣家電的購物網站盤點,發現「靜音 除濕機」「小坪數 除濕機」這類組合有穩定搜尋量,於是把它們從一般篩選頁升級成正式的著陸頁,給它們乾淨的網址、專屬的說明文字與可收錄的設定。這批頁面後來成了穩定的流量來源。剩下沒搜尋量的組合,才進入下一步的擋收錄處理。
3.2 值得留的升級成著陸頁,其餘設 noindex
經過篩選,值得留的那少數組合,我會把它們當成正式頁面經營:乾淨語意化的網址、獨有的品類說明、正常收錄。其餘絕大多數的參數組合,統一設 noindex, follow,讓爬蟲能繼續順著連結走、但不收錄這些薄頁。這裡的 follow 很重要,它讓權重還能透過這些頁面往下傳,只是頁面本身不進索引。
3.3 排序、分頁參數,交給 canonical 收斂
排序方式(價格高到低、上架時間)與純粹改變呈現順序的參數,商品清單其實一樣,這種我一律用 canonical 指回不帶參數的乾淨版本。分頁的處理則要小心,第二頁、第三頁有各自不同的商品,不該全都 canonical 到第一頁,否則後面幾頁的商品會失去被收錄的機會。我通常讓每個分頁自我指向 canonical,讓它們各自被看見。
4. 內容策略:讓該留的篩選頁站得住腳
技術設定處理的是「別讓垃圾頁膨脹」,但那些你決定要留下、要拿去排名的篩選著陸頁,還得靠內容讓它們站得住腳,不然它們自己也會變成薄頁。
4.1 著陸頁要有專屬說明,不能只是篩選結果
一個「防水 運動耳機」的著陸頁,如果只是把符合條件的商品排一排,內容一樣很薄。我會替它補一段專屬說明:這個組合適合誰、挑選時該注意什麼、跟一般款差在哪。這段文字讓頁面有了自己的內容,也讓搜尋引擎明白這頁在講一個具體的主題,而不只是一次篩選操作的結果。有了專屬內容,它才配得上一個可收錄的正式頁面身分。
4.2 用最少的頁面,涵蓋最多的搜尋需求
我的原則是「寧可少而精,不要多而薄」。與其放任成千上萬個組合頁自由生成,不如挑出十幾、二十個真正有搜尋量的組合,把它們做成內容扎實的著陸頁,其餘全部擋在索引外。這樣爬蟲的資源集中在有價值的頁面上,整站的內容品質評價也不會被一堆薄頁拖累。頁面不是越多越好,能被收錄且有價值的頁面越多才好。
5. 常見問題
篩選頁到底該用 canonical 還是 noindex?
看這頁跟主頁面內容像不像。內容實質相同、只是參數不同,用 canonical 合併;內容不同但沒有搜尋價值、你只是不想收錄,用 noindex。兩者作用不同,別混用在同一頁。
可以直接用 robots.txt 把所有帶參數的網址都擋掉嗎?
不建議。robots.txt 擋的是抓取,爬蟲讀不到頁面上的 noindex,已經收錄的薄頁反而更難移除。而且一擋,權重也無法透過那些頁面往下傳。想排除收錄,讓爬蟲抓得到、並在頁面上讀到 noindex 才對。
把大量篩選頁設成 noindex,會傷到整站排名嗎?
正常情況下不會,反而多半是好事。把沒價值的薄頁移出索引,等於讓搜尋引擎把注意力集中在你真正想排名的頁面上。我處理過的案例裡,收斂薄頁之後,重要頁面的表現通常是持平或往上,很少往下。
怎麼知道哪些篩選組合值得做成著陸頁?
用資料判斷。從關鍵字工具看該屬性組合有沒有穩定搜尋量、從站內搜尋紀錄看使用者實際會怎麼組合條件。有明確需求的才升級成著陸頁,沒有的就擋掉,別憑感覺全做或全不做。
分頁的第二頁、第三頁要 canonical 回第一頁嗎?
不要。每一頁的商品都不一樣,全指回第一頁會讓後面幾頁的商品失去被收錄的機會。我的做法是讓每個分頁自我指向 canonical,各自被搜尋引擎看見。
先盤點。在動任何 canonical 或 noindex 之前,先用爬蟲工具看清楚搜尋引擎到底抓到了多少參數網址、其中有多少是薄頁。把規模摸清楚,才知道問題有多大、該從哪個分類先收斂,盲目設定只會製造新的混亂。
