ファセット ナビゲーション URL のクロール管理
ファセット ナビゲーションは、ウェブサイトで一般的に使用される機能で、ウェブサイト訪問者がページ上のアイテム(製品、記事、イベントなど)の表示方法を変更できるようにするものです。ファセット ナビゲーションは人気のある便利な機能ですが、URL パラメータに基づく一般的な実装方法では無限の URL スペースを生成してしまい、ウェブサイトに次のような悪影響を及ぼすことがあります。
- 過剰クロール: ファセット ナビゲーション用に作成された URL は新しいものに見えるため、クローラーはその URL が有用かどうかを判断する前にまずクロールする必要があります。そのため、クローラーが実際には役に立たないと判断するまで、非常に多くのファセット ナビゲーション URL にアクセスすることになります。
- クロールによる発見の遅れ: このように、無用な URL のクロールに時間が費やされると、クローラーが新しく有用な URL にかける時間が少なくなります。
一般的なファセット ナビゲーションの URL には、フィルタ対象のアイテムのプロパティに関連するさまざまなパラメータがクエリ文字列に含まれている場合があります。次に例を示します。
https://example.com/items.shtm?products=fish&color=radioactive_green&size=tiny
URL パラメータである products
、color
、size
のいずれかを変更すると、基となるページに異なるアイテムセットが表示されます。これは多くの場合、フィルタの組み合わせが非常に多く、それが多数の URL に変換されることを意味します。リソースを節約するために、これらの URL を次のいずれかの方法で処理することをおすすめします。
- ファセット ナビゲーション URL をインデックスに登録させる必要がない場合は、これらの URL のクロールを防ぐようにしてください。
- ファセット ナビゲーション URL をインデックスに登録させる必要がある場合は、次のセクションで説明するベスト プラクティスを参考にして URL を設定してください。ファセット URL のクロールは、膨大な数の URL やページをレンダリングするために必要な処理によって、サイトのコンピューティング リソースを多く消費する傾向があります。
ファセット ナビゲーション URL のクロールを防ぐ
サーバー リソースを節約したい場合や、ファセット ナビゲーション URL を Google 検索に表示させる必要がない場合は、以下のいずれかの方法でこれらの URL のクロールを防ぐことができます。
-
robots.txtを使用してファセット ナビゲーション URL のクロールを禁止する。多くの場合、フィルタされたアイテムのクロールを許可するのは、サーバー リソースを消費し、メリットがほとんど得られないためおすすめできません。代わりに、フィルタが適用されていないすべての商品を表示する専用のリスティング ページと、個々のアイテムページのみクロールを許可してください。
user-agent: Googlebot disallow: /*?*products= disallow: /*?*color= disallow: /*?*size= allow: /*?products=all$
-
URL フラグメントを使用してフィルタを指定する。
Google 検索は通常、クロールやインデックス登録では URL フラグメントをサポートしていません。
そのため、フィルタの仕組みが URL フラグメントに基づくものであれば、クロールには(肯定的にも否定的にも)影響を与えません。たとえば、URL パラメータの代わりに URL フラグメントを使用します。
https://example.com/items.shtm#products=fish&color=radioactive_green&size=tiny
ファセット ナビゲーション URL をクロールするかどうかについての優先順位を示す他の方法として、rel="canonical"
、link
要素や rel="nofollow"
アンカー属性を使用する方法があります。ただし、これらの方法は一般的に、先に述べた方法よりも長期的には効果が低い傾向があります。
-
rel="canonical"
を使用して、どの URL がファセット ナビゲーション URL の正規バージョンであるかを指定すると、時間とともに、その URL の非正規バージョンのクロールの回数が減る可能性があります。たとえば、フィルタされたページタイプが 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"
属性を使用することは有益な場合もありますが、効果を得るためには、特定の URL を指すすべてのアンカーにrel="nofollow"
属性を追加する必要があります。
ファセット ナビゲーション URL がウェブに最適化されていることを確認する
ファセット ナビゲーション URL をクロールさせ、インデックスに登録させる必要がある場合は、以下のベスト プラクティスを参考にして、サイト上の多数の URL をクロールすることによる悪影響を最小限に抑えるようにしてください。
-
業界標準の URL パラメータの区切り文字「
&
」を使用してください。カンマ(,
)、セミコロン(;
)、かっこ([
、]
)のような文字は、通常は区切り文字として使用されないため、クローラーがパラメータの区切り文字として認識しづらくなります。 -
/products/fish/green/tiny
のように URL パスでフィルタをエンコードする場合は、フィルタの論理的な順序が常に同じであり、重複するフィルタが存在しないことを確認してください。 -
フィルタの組み合わせで結果が返されない場合は、HTTP
404
のステータス コードを返します。 サイトの在庫に「緑の魚」がない場合、ユーザーとクローラーには適切な HTTP ステータス コード(404
)が返され、「見つかりません」というエラーが表示されます。これは、URL に重複するフィルタや論理的に意味のないフィルタの組み合わせ、または存在しないページネーション URL が含まれている場合にも当てはまります。同様に、フィルタの組み合わせに結果がない場合は、一般的な「見つかりません」エラーページにリダイレクトしないでください。代わりに、エラーが発生した URL で「見つかりません」エラーを表示し、HTTP ステータス コード404
を返します。