rel=“canonical”タグと301リダイレクトの違いは? どちらを使うべきか?

[対象: 中〜上級]

rel=”canonical”タグ301リダイレクトはどちらもURLの変更や正規化に使えます。

使い分けはどうしたらいいのでしょうか?
どのような違いがあるのでしょうか?

Bingのウェブマスタープログラムのシニアプロダクトマネージャ、Duane Forrester(デュアン・フォレスター)氏が、コンテンツを移動するときには301を考慮すべきでrel=”canonical”ではないとBingのウェブマスター向け公式ブログで説明しています。

まず、フォレスター氏が解説した301リダイレクトとrel=”canonical”の特徴の重要な点をまとめます。

  • 301リダイレクトは大部分の価値を渡す。しかしすべてを渡すことはしない。なぜなら新しいURLは新しいURLであって、オリジナルとの差を近づける、つまりコンテンツが持つ価値を完全に受け渡すようにするには他のシグナルも見る必要があるから。
  • 301リダイレクトによる移行期間にはトラフィックの減少が見られるかもしれない。この期間がどのくらい続くかを明確に決める法則はないが、通常は1ヶ月かそれ以下。
  • 301リダイレクトの代わりにrel=”canonical”を使うべきではない。rel=”canonical”は重複コンテンツを解消するために設計されたもので、301と同じように価値を渡せるが301が本来持つシグナルを検索エンジンに伝えるものではない。
  • 301リダイレクトにしくじるということはなかなかありえない。うまくいくかうまくいかないかのどちらかで、うまくいけば価値を渡せる。

Bingのブログ記事ですが、僕が認識しているGoogleの301/rel=”canonical”の扱いとほぼ同じです。

Googleも、301リダイレクトしたURLはPageRankを100%完全には渡さずいくらか減らすと言っています。
もっともGoogleにおいては減らす理由がはっきりしません。
Bingと同じような理由かもしれないし、301はSEO目的で乱用されたりスパマーに悪用されたりすることがあるからかもしれません。

ドメイン名を変更したり大量のURLを書き換えたりしたときはGoogleでも検索順位が下がることがあります。
元に戻る期間はまちまちで2、3ヶ月戻ってこないことも経験しています(ここまで長いと別の原因も考えられますが)。

rel=”canonical”タグは301リダイレクト相当の働きをしますが、301リダイレクトの完全な置き換わりにはなりません。

違いはいくつかあります。

1) 検索エンジンはrel=”canonical”を「ヒント」として見るだけであって、命令として必ず従うわけではありません。

2) 301は指定されたURLに強制的に転送され検索エンジンのロボットは元のページを読むことはできません。
しかしrel=”canonical”は元のページ(rel=”canonical”を記述しているページ)を読みます。
たとえばそのページにリンクがあればそのリンクをたどってリンク先ページにアクセスしPageRankを渡すこともありえます。

3) 301が設定されているときに元のページを見ることができないのはユーザーも同じです。
301が設定されていればユーザーは新URLに転送されてコンテンツを見ます。
一方でrel=”canonical”では元のページのコンテンツを見ることができます。
表面上は何も変わりません。
rel=”canonical”で指定したページに転送されたりはしません(これ、勘違いしている人がいるよね)。
ユーザーには関係なくて、検索エンジンがインデックスするうえで301リダイレクト相当として処理するだけです。

4) 301リダイレクトは正しくできているかの検証が容易です。
ツールを使ってHTTPヘッダーを調べることができます。
対してrel=”canonical”は、正しく記述できていたとしてもあくまでも「ヒント」なので期待どおりに処理されるかは分かりません。
処理されるまでに時間も必要です。
まして不容易に使おうものならヒドイ事態に陥ることだってあります。

rel=”canonical”タグは仕組みを十分に理解しておけば非常に有用な特徴を持っていますが、中途半端な理解で使うことはお勧めしません。
使いたいなら十分に研究してからにするべきです。

rel=”canonical”を使うべき一般的なケースは次のような場合でしょう。

  • 重複コンテンツがサイト内で発生しなくすことができない
    ECサイトでの金額によるアイテムの並べ替えやトラッキングのためのパラメータ追加など、コンテンツが同じまたはほぼ同じページに複数のURLを与えなければならないことがあります。
    こんなときこそがrel=”canonical”の出番です。
  • 同じコンテンツを複数のサイトで公開する
    シンジケーション(記事配信)など、互いの合意のもとにコンテンツを複数のサイトに配信するときは、オリジナル記事をrel=”canonical”で指定することでクロスドメインでの重複コンテンツの発生を防ぐことができます(Googleはクロスドメインでのrel=”canonical”をサポートしています)。
    こうするとオリジナル以外のURLは検索結果には出なくなります。
  • デスクトップ向けページとスマートフォン向けページを別々のURLで提供する
    利用者が増えてきてさらに増えるだろうスマートフォン専用のページを、通常のデスクトップPCとは異なるURLで展開しているときにはrel=”canonical”タグでスマートフォンページをデスクトップページに正規化しておくと重複コンテンツの発生を抑えることができ安心でしょう。
  • 301リダイレクトが使えない
    URLの変更には301リダイレクトが基本です。
    しかし無料ブログで.htaccessが置けないなど301リダイレクトが使えない状況があります。
    そんなときはrel=”canonical”で代用するしかありません。
    ただしユーザーは新URLへ転送されません。
    お気に入りからアクセスしたとしたら昔のURLにとどまったままです。
    301リダイレクトはPageRankが失われるからという理由でrel=”canonical”を使おうとする人がいますが、そういう打算的でせこい使い方はやめましょう。
  • ページネーションをビューオールページと併用する
    ページネーションとビューオールページの両方を利用するときはrel=”canonical”を使うことができます。
    詳しくはこちらの記事を読んでください。

他にも301リダイレクトではなくrel=”canonical”を使うべきケースがあるとは思います。

ただ、何度も繰り返すようにrel=”canonical”の目的・仕組み・動きを十分理解してから使うようにしましょう。

中途半端な理解、まして検索エンジンを騙そうという考えで使うことは痛い目を見ることもあるでしょうからやめたほうが身のためです。