URLの正規化とcanonical属性、canonical URL

URLのパス名を動的に生成する場合、複数のURLで同一のコンテンツにアクセスできる場合があります。
この点については、Amazonのパラメータによる動作の違いと、最短のURLで検討したとおりです。


この際に生じる問題を検討します。




長くなってしまったので、目次。

1.重複コンテンツと検索エンジン
2.ソーシャルブックマークへの対応
3.Amazonがする対応策
4.クローキング?
5.URLの正規化(結論)

1.重複コンテンツと検索エンジン

同一のコンテンツが複数のURLにある、いわゆる重複コンテンツは、異なるサイト・同一のサイトいずれでも問題になりえます(と理解しています^^;)。


この点、重複コンテンツは検索エンジン等からペナルティを受ける。したがって絶対避けるべき、という見解が一時期ありました。しかし、少なくともGoogleはペナルティはない(特別の「意図がうかがえない限り、そのサイトに対する処置の理由にはなりません」)としています。


とはいえ、「フィルタリングによっていずれか 1つがリストに登録され」るので、想定外の振り分けをされるデメリットは当然残っています。


なにより、閲覧者が混乱しますよね。


つまり、URLの正規化が重要ということになるでしょう。
以下の記事は本当に為になりました。


▽重複するコンテンツ(Google ウェブマスター/サイト所有者ヘルプセンター)
 http://www.google.com/support/webmasters/bin/answer.py?answer=66359&hl=ja


2.ソーシャルブックマークへの対応

1.以外に以下のような問題があります。
複数のURLで同一のコンテンツにアクセスできる場合、ソーシャルブックマーク上では別の記事と判断されて、ソーシャルブックマークが散らばってしまいます。当然といえば当然。
これはソーシャルブックマークが普及した現在、見逃せない問題でしょう。


Amazon等の大きなサイトであれば、ソーシャルブックマーク側で対応してよ!とも思いますが、自分でつくるサービスの場合、対応してもらえる訳がない(笑)よってサービス側で適切に処理する必要があります。


やっぱり、URLの正規化は大事です。


3.Amazonがする対応策

Amazonの場合、User Agentをみてbotと判断した場合には、301でリダイレクトして、(あくまで「優先するURLをGoogleに指定する」という狭義の意味での)URLの正規化を行っているようです。


http://www.amazon.co.jp/の「二枚舌」に学ぶ究極のSEO(404 Blog Not Found)
 http://blog.livedoor.jp/dankogai/archives/50813868.html



つまり「1.重複コンテンツと検索エンジン」の問題への対策は為されています。


一方、ブラウザで

http://www.amazon.co.jp/dp/4049262088/mitainamono-22

とアクセスしても、ブラウザのアドレス欄に変化はありません。
したがって、「2.ソーシャルブックマークへの対応」については放置。


全てのアクセスについて301でリダイレクトすれば、1も2もクリアできるのですが、あえて1のみ対処しているのは、(a)全てリダイレクトするのは負荷的に望ましくない(?)こと、(b)ECサイトだから、Googleはともかく、ソーシャルブックマークを集める必要が乏しいことからでしょうか。


そもそもこういう「二枚舌」が(Google的に)許されるのか、という指摘も多いのだけれど、上記記事から数年経っても今のところ(あくまで今のところ)マイナス評価はされていないようです。


▽「検索ボットのみURI Redirect」はクローキングにあらず(404 Blog Not Found)
 http://blog.livedoor.jp/dankogai/archives/51222330.html


はてなブックマークのやりすぎちゃったかもしれないSEO(ぼくはまちちゃん!)
 http://d.hatena.ne.jp/Hamachiya2/20090609/cloaking


4.クローキング?

上記「二枚舌」が許されることの現れとして、小飼さんはcanonical属性を挙げます。


canonical属性とは、URL正規化タグです。今年の2月に、検索三社 Yahoo!Google、MSN Live Searchが、共同して採用を発表しました。


URL正規化タグというように、複数のURLで同一のコンテンツがある場合に、link relで原本にあたるリンク(=canonical URL≒パーマネントリンク)を指定することで、(検索エンジンに対して)301リダイレクトと同様の効果を得ることができます。
※ただし、同じドメイン内で有効(サブドメインは可)で、異なるサイト間では、canonical属性は使用できないので注意が必要です。


▽link rel="canonical"によるURL正規化タグ??SEOにとって非常に重要な進歩(前編)
 (Web担当者Forum)
 http://web-tan.forum.impressrd.jp/e/2009/03/05/5112



つまりcanonical属性があるということは、複数のURLで同一のコンテンツがある場合を予定しているのだから、URLの正規化は必要である。「二枚舌」はURLの正規化の方法の一つだから許されるんじゃないの?というのが小飼さんが後半で言っていることだと思います(レベルが違いすぎるので、理解が間違っていたらごめんなさい)。


ただURLの正規化としてcanonical属性を用意した以上、これを使うべきであって、そもそも人とbotでリダイレクトさせて動作を異ならせるなど言語道断。人間の利便性を図るためにbotが走っているのだから挙動を変えるべきでない、という立場も当然ありうるでしょう(不自然なSEOと判断する立場)。つまり、canonical属性が「二枚舌」を許容する現れとは一概に言えません。


しかし、リダイレクトの有無によって表示される内容に差異が生じるわけでもないし、URLの正規化の点からは端的だし、人間の側が釈然としない(笑)以外のデメリットはない。小飼さんがおっしゃるとおり、純然たるクローキングそのものでもない。よって問題なかろーというのもよくわかります。どちらかというと、私はこの立場です。


5.URLの正規化(結論)

私がしたいのは、クローキングかどうか、という議論ではありません(だいぶ話が逸れたのです)。
URLを正規化して、「1.重複コンテンツと検索エンジン」「2.ソーシャルブックマークへの対応」という2つの問題をクリアしたい、ということです。


1.については、canonical属性でクリアできます。
問題は2.です。


そこで、ソーシャルブックマークcanonical属性をうまく利用してくれないものかと思いました。


ブックマークレットでの URL の正規化に対応しました(はてなブックマーク日記)
 http://hatena.g.hatena.ne.jp/hatenabookmark/20090618/1245312744


はてブは対応しているそうです!
今年6月!まだ対応してほやほやですね。


ただし古いはてブブックマークレットだと駄目(^_^;


はてブ向けに Canonical URL を導入したがブックマークレットが古いと動かない(ラボログ)
 http://blog.spicebox.jp/labs/2009/07/_canonical_url.html


うーん、惜しい。
せめて新しいブックマークレットに誘導してもらいたいものです。



そうするとAmazonのようなURLで1と2の両方を相当の可能性でクリアするには、現段階だと301でcanonical URLにリダイレクトする他ないことになります。並行してCanonical URLの設定もしておいて、時期をみて(ブックマークレットがそれなりの割合で更新された頃に)リダイレクトをやめると。

一方、これによる(リダイレクトによる負荷が高すぎるという)デメリットが、ソーシャルブックマークが分散しないというメリットを上回る場合には、canonical属性で指定するだけでいいことになります。


つまり、(Amazonのように)botCanonical URLに誘導するためだけにリダイレクトする必要は、canonical属性が導入された現在、全くなくなっている、ということです。


念のためcanonical属性が入ってないか確認しましたが、現段階では未対応のようです。ふむ。


まださほど知られていないタグだと思うのですが、canonical属性をうまく使って、URLを正規化して、各方面に負担をかけずにcanonical URLへ誘導していきたいものです!