將冗餘的查詢、篩選頁面設為 Noindex,解決 GSC 網頁索引狀態中未編入索引的問題
架設 WordPress 網站會使用各式各樣的外掛,建立各種目的與類型的頁面,許多頁面的產生、維護與管理超過一般站長能夠掌控的範圍之外,對搜尋引擎來說,可能會將大部分的檢索資源都浪費在這些冗餘的網址頁面上,當網站遭遇這個問題時,可能因此受到影響而不自知。
為了解決這類問題,讓搜尋引擎可以更有效率地知道網站上有價值的頁面有哪些,在 SEO 最佳化的過程中我們會需要針對 Google Search Console (GSC) 網頁索引狀態頁面中的「網頁未編入索引的原因」一一判讀是否有這類被檢索、找到但其實是不需要被編入索引的頁面。
在這篇文章中,我們針對因 WordPress 核心機制與外掛機制而產生的頁面、子頁面、分類頁面、查詢頁面,找出將這類不需要被編入索引的頁面排除索引的方式,進而解決搜尋引擎檢索資源浪費的問題。

常見冗餘頁面、網址類型
WordPress – 查詢頁面
一般來說,就是網址中帶有 ?s=example
或 /search/example
等參數或字串的頁面,這類頁面的產生並非來自於站長對網站的規劃,而是由訪客在網站中搜尋感興趣的主題時動態產生的。
這也是最常被濫用作為「垃圾內容索引」的 SEO 垃圾內容攻擊方法之一,可以參考「如何避免網站的站內搜尋成為垃圾內容索引」一文,我們對於如何防範這類問題提供了詳細的說明。
WordPress – 留言子頁面
對架設部落格網站的站長來說,過往大家都會習慣開放留言區塊,歡迎訪客彼此留言互動,也能夠增加一些志同道合夥伴們的反向連結。
不過,留言也是另一個最常被濫用的網站功能,對於疏於管理的網站來說,會讓管理員、訪客點擊到不安全的連結造成資安危機。
而充滿垃圾留言的網站,不僅會影響網站體驗、訪客觀感,時間久了更會損害網站的 SEO。
對於如何防止垃圾留言,可以參考「如何在 WordPress 中使用 Cloudflare Turnstile 防止垃圾留言?」一文,我們的網站以及社群朋友們在參考我們的文章使用 Cloudflare Turnstile 之後,網站上就不再會出現垃圾留言了。
對於熱門網站來說,如果有設定留言的分頁功能,就會在 Google Search Console 的網頁索引狀態中的「替代頁面 (有適當的標準標記)」類別中,看到帶有 /comment-page-1/
、/comment-page-2/
等字串的網址。

WordPress – Query Loop
對於同時經營多個主題的網站來說,為了讓各個主題能夠有更好的呈現方式,站長們通常會為各個主題設定專門的頁面,在頁面中使用 Query Loop 功能可以按照類別或標籤來顯示文章。
文章數量一多,點擊下一頁按鈕之後往往可以看到網址中出現了查詢字串,例如 /?query-xxxx
。如果一個頁面中有多個 Query Loop 區塊,就會有多個查詢字串的組合,在各種排列組合下就有可能產生相當大量的冗餘網址。

電商外掛 – 商品子頁面、結帳頁面
商品子頁面類似於上述所說的 Query Loop 的情況,一般電商外掛會將商品用自訂內容類型的方式建立,而商品頁面、關聯商品 (You May Also Like) 等功能也會使用 Query Loop 的方式產生。
相同地,商品數量一多,在點擊下一頁之後也能看到網址中出現查詢字串,像是 /?products 及其組合。

如果是動態生成的結帳頁面,也會有相同的問題。

這些都是我們想要在 Google Search Console 中移除的冗餘網址類型。
此外,我們也曾經討論過:「如何移除網址中的 Facebook、Google 追蹤參數 fbclid 與 gclid」
Robots Meta 標籤
為了讓搜尋引擎知道哪些頁面是需要進行索引 (Index),以及是否要追蹤頁面中的連結 (follow),我們可以在頁首 <head></head> 中加入 robots meta 的標籤。
為了排除這類帶有查詢、篩選字串的冗餘頁面,我們會需要用到 noindex、nofollow、follow 等標籤。
不建立索引、不爬頁面中的連結
對於不想要出現在搜尋結果中 (避免重複、替代頁面問題),也不需要搜尋引擎額外爬頁面上的連結,可以加上:
<meta name="robots" content="nofollow, noindex" />
不建立索引、要爬頁面中的連結
如果不想要浪費搜尋引擎的檢索資源,但頁面中連結到的頁面對網站是有價值的,可以使用:
<meta name="robots" content="follow, noindex" />
這也是一般最常用的方法。
對於懂得如何寫程式的站長來說,可以根據 robots 標籤提供的功能彈性指定讓搜尋引擎知道哪些頁面該要遵循什麼樣的檢索規則。
然而,對於 WordPress 網站來說,一般會需要利用 SEO 外掛提供的功能才能做到對各類型頁面、文章的細部設定。
透過 SEO 外掛管理 Robots Meta
一般設定
大多數的 SEO 外掛都會提供 WordPress 內建的文章、頁面、類別、標籤、作者等頁面類型 (以及支援的 CPT 自訂內容類型),讓管理者可以自行決定這些內容類別的 Robots Meta。
RankMath SEO
從 WordPress 後台 Rank Math SEO 選單中的「Titles & Meta」→「Global Meta」頁籤中,可以設定整個網站的 Robots Meta 預設行為,這裡一般都會設定為 Index,讓搜尋引擎進行索引。
而在 Post Types 選項下的各種內容類型 (包含支援的自訂內容類型),也都有提供 Robots Meta 設定功能,可以根據每個內容類型進行調整。

而個別的文章、頁面也能在編輯介面右上角找到 Rank Math 圖示,在 Advanced 選項下可以針對每篇文章進行設定。

Yoast SEO
從 WordPress 後台 Yoast SEO 選單中的「Settings」頁面可以找到 Content types 與 Categories & tags 區塊,其下可以看到 Yoast SEO 支援的各種內容類型 (包含自訂內容類型),可以決定此內容是否需要包含在網站地圖 Sitemap 中、是否需要讓搜尋引擎進行索引。

而個別的文章、頁面也能在編輯介面右上角找到 Yoast SEO 圖示,在 Advanced 選項下可以針對每篇文章進行設定。
- Allow search engines to show this content in search results?
是否要讓搜尋引擎進行索引?是 = index、否 = noindex - Should search engines follow links on this content?
是否要讓搜尋引擎爬頁面中的連結?是 = follow、否 = nofollow

進階設定
RankMath SEO
對於網站的其他功能所產生的頁面,例如作者彙整、日期彙整、搜尋頁面、子頁面、受密碼保護頁面等,RankMath SEO 也提供了功能可以設定其 Robots Meta。
這些可以從 WordPress 後台 Rank Math SEO 選單「Titles & Meta」下的「Authors」與「Misc Pages」頁籤找到相關設定。
其中,將搜尋頁面、子頁面、受密碼保護頁面設定為 Noindex 的設定都統整在「Misc Pages」頁籤下:

Yoast SEO
從 WordPress 後台 Yoast SEO 選單中的「Settings」→「Advanced」頁籤中,也提供了作者彙整、日期彙整等頁面是否要顯示在搜尋結果的設定。

而在 Crawl optimization 頁籤中 Yoast SEO 提供了許多最佳化外掛才會提供的功能,其中 Disable unwanted content formats 可以根據需求移除網站上的各類型 feed。

這通常也是在「已檢索 – 目前尚未建立索引」中會大量看到的冗餘網址。

將冗餘網址設定為 Noindex
閱讀到這,是不是發現最前面提到的冗餘頁面、網址類型還是有很多都無法處理,像是留言子頁面、Query Loop 子頁面、商品子頁面等。
RankMath SEO Filter
對於這部分,RankMath SEO 提供了相當高的自由度讓開發人員可以對 RankMath 有提供的功能進行客製化,例如 Sitemap、Meta Data、Breadcrumbs、OpenGraph、Rich Snippets 等。
其中,Robots Meta 就是 Meta Data 資料的一部分,我們可以使用「rank_math/frontend/robots」這個 Filter 來改變網址的 Robots Meta 設定。
透過 Code Snippets 工具 WPCodeBox 將以下程式碼嵌入到網站中。
add_filter("rank_math/frontend/robots", function ($robots) {
$url = home_url($_SERVER["REQUEST_URI"]);
if ( (strpos($url, "?products") !== false) ||
(strpos($url, "?query-") !== false) ||
(strpos($url, "comment-page-") !== false)
) {
$robots["index"] = "noindex";
$robots["follow"] = "follow";
}
return $robots;
});
如果對 RankMath SEO 提供的客製化功能有興趣,可以參考官方的說明文件。
Yoast SEO Filter
Yoast SEO 也提供了詳盡的開發者說明文件,其中對於 Metadata 也有提供 API 可以修改 Robots Meta,對應的 Filter 則是「wpseo_robots」。
同樣的,透過 Code Snippets 工具 WPCodeBox 將以下程式碼嵌入到網站中。
function change_robots_meta_settings( $output, $presentation ) {
$url = home_url( $_SERVER["REQUEST_URI"] );
if ( (strpos( $url, "?products" ) !== false) ||
(strpos( $url, "?query-" ) !== false) ||
(strpos( $url, "comment-page-" ) !== false)
) {
return "noindex, follow";
}
return $output;
}
add_filter( "wpseo_robots", "change_robots_meta_settings", 10, 2 );
如果要在正式網站中加入程式碼,別忘了都得要按照正式的測試步驟確認功能一切正常,並且沒有影響到網站的其他原本功能。
詳細步驟可以參考「進行網站功能測試時所需要的規劃與準備」文中的說明。
如果對 Yoast SEO 提供的客製化功能有興趣,可以參考官方的說明文件。
這樣我們就能把網址中帶有相關字串的 Robots Meta 設定為 noindex 且 follow 了,修改後可以在檢視網頁原始碼的時候看到如下的 Robots Meta 內容。
<meta name="robots" content="follow, noindex"/>
結語
在這篇文章中,我們整理了幾個常見的 Google Search Console 網頁索引狀態中,未編入索引的冗餘網址問題。
這類問題大多數歸類在:
- 替代頁面 (有適當的標準標記)
- 已檢索 – 目前尚未建立索引
等類別下。
希望透過這篇文章的說明,可以協助大家節省寶貴的搜尋引擎檢索資源,不再浪費在這類冗餘網址上。
有任何問題也歡迎加入臉書社團 或 Discord 社群一起討論唷!