サイトには、URLは異なるがウェブページの内容は変わらないというケースがあります。たとえば、URLがトラッキング用のパラメータを含んでいる場合や、URLに含まれるパラメータをもとに閲覧環境によってウェブページの表示を最適化しているような場合です。
例
http://www.example.com/products?trackingid=feed
http://www.example.com/products?sessionid=hgjkeor2
http://www.example.com/products?printable=yes&trackingid=footer
このような場合、検索エンジンのインデックスに個々のURLで登録されると、同じ内容のウェブページが検索結果に表示されたり、同じ内容のウェブページであるにもかかわらず、各ウェブページにクローラーが巡回し、サーバーに負荷をかけてしまう、また、サイト内の巡回が効率的に行われないといった不都合が発生することがあります。
このようなことを避けるため、サイト管理者がウェブページのなかでlinkタグを利用して、重複を避けるように検索エンジンに通知する方法が用意されています。
link rel="canonical" href="http://www.example.com/products" /
たとえば、http://www.example.com/products?trackingid=feedのheadに上記のように記述した場合には、http://www.example.com/products?trackingid=feedというURLのウェブページは、http://www.example.com/productsというURLのウェブページと同じ内容であることを、検索エンジンに通知していることになります。
link rel="canonical" href=""の記述方法と機能
「href=」に記述するURLは、絶対参照(参照先のファイルのURLを記述する方法)、相対参照(参照元のファイルの場所を基準にして「/」や「.」などを使って参照する方法)のどちらでもかまいませんが、予期しない検索エンジン側でのエラーを避けるために、絶対参照を利用されることをおすすめします。
「href=」に記述するURLは、このタグを記述するドメインと同じドメインである必要があります。たとえば、http://test.example.comのウェブページにこのタグを記述する場合、「href=」に、http://www.example.comという同じドメイン内のウェブページのURLは記述できますが、 http://search.yahoo.co.jpといったほかのドメイン内のウェブページは記述できません。
この記述は、参照してほしいウェブページを指し示すという点では301リダイレクトの機能に似ていますが、301リダイレクトの場合は、リダイレクト元のウェブページに内容がなく、自動的にリダイレクト先に遷移させられるという点が異なります(参考:「リダイレクトとは?」)。
検索エンジンは、内容が重複するウェブページのクロールやインデックス登録を避けるための情報のひとつとして、このタグの記述をほかの情報やデータとともに利用し、最終的に重複とみなすかどうかを自動的に判定します。また、「href=」に記述されているURLのウェブページが存在しなかったり、このウェブページの内容が重複していないとみなされた場合などは、この記述による通知はインデックス登録やクロールで考慮されません。
AというウェブページがBというウェブページを指し示し、さらにウェブページBがCというウェブページを指し示した場合には、AとBはCというウェブページと内容が重複しているとみなされます。ただし、このような参照が無限に続いてしまうとみなされないようにしてください。
この記述は、Yahoo!検索が利用しているYSTだけでなくGoogle、MSNの検索エンジンにも共通の規格です。
注意
サイトの構築にあたっては、可能な限りURLを正規化し、ウェブページの内容が重複しないようにすることをおすすめします。ただし、内容が重複するウェブページに同じURLを設定できない場合には、link rel="canonical" href=""やYahoo!検索 サイトエクスプローラーの動的URL設定の機能をご利用ください。