管理多面向導覽網址的檢索

多面向導覽是網站的常見功能,可讓訪客變更網頁上顯示項目 (例如產品、文章或活動) 的方式。這項功能相當實用且廣受歡迎,但最常見的實作方式 (以網址參數為基礎) 可能會產生無限的網址空間,進而以幾種方式損害網站:

  • 過度檢索:由於針對多面向導覽建立的網址似乎是新的,而且檢索器在檢索網址前,無法判斷這些網址是否有用,因此檢索器通常會在過程中判斷網址其實無用之前,先存取大量多面向導覽網址。
  • 檢索發現新網址速度變慢:延伸上述情況,如果檢索器花費時間檢索無用的網址,就會減少檢索有用的新網址所需的時間。

一般多面向導覽網址的查詢字串中,可能會包含與篩選項目屬性相關的各種參數。例如:

https://example.com/items.shtm?products=fish&color=radioactive_green&size=tiny

變更任何網址參數 productscolorsize,都會在底層網頁上顯示不同的項目組合。這通常代表可能的篩選器組合數量非常龐大,進而產生大量可能的網址。為節省資源,建議您採用下列任一方式處理這些網址:

  • 如果您不需要可能會建立索引的多面向導覽網址,請禁止檢索這些網址。
  • 如果您需要有可能建立索引的多面向導覽網址,請務必遵循下一個章節所述的最佳做法。請注意,由於需要大量網址和作業才能算繪這些網頁,因此檢索多面向網址通常會耗費大量運算資源。

避免多面向導覽網址的檢索

如要節省伺服器資源,且不想讓多面向導覽網址顯示在 Google 搜尋結果中,您可以使用下列任一方式,防止這些網址遭到檢索。

  • 使用 robots.txt 禁止檢索多面向導覽網址。通常沒有理由允許系統檢索篩選過的商品,因為這會消耗伺服器資源,但帶來的效益卻微乎其微。建議您只允許系統檢索個別商品的網頁,以及專屬的產品資訊頁面 (顯示所有產品而不套用篩選器)。
    user-agent: Googlebot
    disallow: /*?*products=
    disallow: /*?*color=
    disallow: /*?*size=
    allow: /*?products=all$
    
  • 使用網址片段指定篩選器。 Google 搜尋通常不支援檢索和索引中的網址片段。 如果篩選機制是根據網址片段,則不會對檢索作業造成任何影響 (無論是正面或負面)。舉例來說,請使用網址片段,而非網址參數:
    https://example.com/items.shtm#products=fish&color=radioactive_green&size=tiny

您也可以使用 rel="canonical" link 元素和 rel="nofollow" 錨點屬性,指出要 (或不要) 檢索哪些多面向導覽網址。不過,這些方法長期而言的效果通常不如前述方法。

  • 使用 rel="canonical" 指定哪個網址是多面向導覽網址的標準版本,可能會隨著時間推移,降低這些網址非標準版本的檢索量。舉例來說,如果您有 3 種經過篩選的網頁類型,建議將 rel="canonical" 指向未經篩選的版本:https://example.com/items.shtm?products=fish&color=radioactive_green&size=tiny 指定 <link rel="canonical" href="https://example.com/items.shtm?products=fish" >
  • 在指向篩選結果頁面的錨點上使用 rel="nofollow" 屬性可能會有所幫助,但請注意,指向特定網址的每個錨點都必須具備 rel="nofollow" 屬性,才能發揮作用。

確保多面向導覽網址在網站運作上最理想

如果您需要讓多面向導覽網址有機會受到檢索及建立索引,請務必遵循下列最佳做法,盡量減少檢索網站上大量潛在網址所造成的負面影響:

  1. 使用業界標準的網址參數分隔符「&」。半形逗號 (,)、分號 (;) 和括號 ([]) 等字元很難讓檢索器偵測為參數分隔符 (因為它們通常不是分隔符)。
  2. 如果您在網址路徑中編碼篩選器 (例如 /products/fish/green/tiny),請確保篩選器的邏輯順序一律保持一致,且不存在重複的篩選器。
  3. 當篩選器組合未傳回結果時,傳回 HTTP 404 狀態碼。 如果網站商品目錄中沒有綠魚,使用者和檢索器都應收到「找不到」錯誤訊息,並附上適當的 HTTP 狀態碼 (404)。如果網址包含重複的篩選器或其他不合理的篩選器組合,以及不存在的分頁網址,也應是這種情況。同樣地,如果篩選器組合沒有結果,請勿重新導向至常見的「找不到」錯誤頁面,而是在發生錯誤的網址下方,以 404 HTTP 狀態碼傳送「找不到」錯誤。