【保存版】301や302、307、JavaScript、meta refreshなどのリダイレクトをGoogleはどのように処理するか?

[レベル: 中〜上級]

GoogleのJohn Mueller(ジョン・ミューラー)氏が、各種のリダイレクトに対する検索エンジン(とGoogle)の処理方法について、詳細にまとめた説明をGoogle+に投稿しました。

リダイレクトの違いがいまいちわかっていないひとにとってはもちろんのこと、リダイレクトについて熟知しているひとにとっても、リダイレクトについての理解を深めることができるとても役立つ解説です。
日本語に訳したので参考にしてください(可能な限りこなれた日本語に訳したので、原文にはない言葉を使っている部分もあります)。

リダイレクト全般について、まず、ミューラー氏は次のように簡単に定義します。

一般的に、リダイレクトは2つのページ間で行われる。ここでは、それらのページをRとSと呼ぶことにする。

ものすごく単純化して言うと、「ページRを呼び出したときはページSにコンテンツがある」ということを示している。ブラウザに関して言えば、Sのコンテンツは即座に表示される。

とても単純に聞こえるが、どうして異なる種類のリダイレクトがあるのだろうか? リダイレクトについて一緒に考えてみよう。そうすればもっとはっきりするだろう。

Rが転送元ページ、Sが転送先ページ

ここからは、各種リダイレクトの詳細な動きと検索エンジンの扱い方の説明の本編です。

サーバー サイドのリダイレクト

サーバー サイドのリダイレクトでは、ウェブサーバーはそのページにユーザーがアクセスしようとしたらすぐにリダイレクトを返す。ページRにある何らかのコンテンツをユーザーが見ることは決してない。

301 Permanent Redirect (恒久的な転送)

301リダイレクトは、「このリダイレクトに関して処理方法を将来変更することはない」とサーバーは伝えている。今後は”S”を使いなさい、そのコンテンツもそのようにキャッシュできると伝える。

検索エンジンは、”S”にあるコンテンツをインデックスし、Rが持つシグナルをすべてSに転送する傾向にある。

サイトのURLを永久的に変更する際(サイトの移転やサイトの再構成、HTTPSへの移行など)に使える ―― 少なくとも、それらの転送したURLに新しい家を見つけるまでは 。[鈴木注: 「新たな転送先URLを確定するまでは」という意味かな?]

302 Temporary Redirect (一時的な転送)

名前が示すように、302リダイレクトはそれほど恒久的でないことがありうる。将来変わるかもしれないし、だれがそのURLにアクセスするかやどんなデバイスが使われているか、ユーザーがいる場所によっても変わるかもしれない。

このリダイレクトのコンテンツをキャッシュすることはできない。

常に”S”にリダイレクトするとは限らないので、検索エンジンは、”R”にあるコンテンツをインデックス(し、すべてのシグナルをRに保持したままに)する傾向にある。

ルートのURLから下層のURLに転送する際に使える(“/” ⇒ “/fancycms/mainpage.php”)。またユーザーの国やデバイス、言語設定に応じてリダイレクトする際にも使える。

クライアント サイドのリダイレクト

クライアント サイドのリダイレクトでは、ウェブサーバーはRとSの両方のコンテンツを返すが、ブラウザはリダイレクトを認識する。

JavaScript リダイレクト

もし、サーバーサイドのリダイレクトを使うことができないなら、JavaScriptを使うのは便利な代替策になる。サイトでJavaScriptのフレームワークを使っている場合にも、唯一の選択肢になるかもしれない。

キャッシュするかどうかはサーバーの設定によるし、サイト管理者がどうしたいか(RとSのどちらをインデックスさせたいのか)を検索エンジンは推測しなければならない。

[鈴木注: 遅延が大きくなるなどの問題点もありますが、JavaScriptリダイレクトしか使えない環境があるので、GoogleはJavaScriptリダイレクトをサポートしているとミューラー氏はコメントで補足しています]

meta refresh 系のリダイレクト

>meta refresh 系のリダイレクトは、一種のJavaScriptのリダイレクトのようなものだが、通常は推奨されない。

[鈴木注: meta refreshのリダイレクトを使わないようにとW3Cは2000年から推奨していますが、使われ続けると思われるのでGoogleはサポートしています。しかし、不適切に使っているケースも多いので、ほかのリダイレクトが使えるならそちらを使うようにとミューラー氏はコメントで補足しています。]

307 リダイレクト

「ちょっと待って、これはサーバーサイドのリダイレクトじゃないの?」と思うかもしれない。そうではない。307 リダイレクトは実際には、ブラウザが返している。

HTTPSを設定していて、HTTPからHTTPSへ301リダイレクトし、かつHSTSを有効にしている場合、ブラウザでHTTP版のページへアクセスしようとした際、HTTPS版のページへブラウザは自動的にアクセスする。しかし、307リダイレクトとして記録する。その307というのはウソなんだ。(笑)

[鈴木注: 307リダイレクトについてはWeb担の連載コラムで解説しました。]

リダイレクトに関してよくあるそのほかの質問

PageRank

PageRankはどうなるのか?

単純なことで、検索エンジンは、Rが持つシグナルとともにコンテンツをインデックスするか、Sが持つシグナルとともにコンテンツをインデックスするかのどちらかだ。どちらの種類のリダイレクトを使うかは問題ではない。

[鈴木注: 301・302とPageRankとの関係については、先日投稿したばかりのこちらの記事を参照してください。]

そのほかのリダイレクト

303や、304、305はどうなるのか?

ほかの種類のリダイレクトに強く心がひかれるなら、ご自由にどうぞ。どちらのURLにあるコンテンツをインデックスすべきかを、私たちは見極めなければならないだろう。したがって、そうしたリダイレクトをどうしても使いたいなら、正規化のための他の手段も必ず設定した方がいい。

リダイレクトの数

いくつのリダイレクトを同時にできるのか?

私たちは連続したリダイレクトを最大5つまで追跡する(ただし、どんなリダイレクトであっても可能な限り少なくしてほしい)。しかし、自分のサイトでは好きな数だけリダイレクトを同時に使ってかまわない 。

[鈴木注: 「でも、6回以上はGoogleはリダイレクトを処理しないからね、悪しからず」というニュアンスが含まれているように思います。また、連続リダイレクトの上限が5回というのはGoogleが独自に決めたルールではなく、3xx系のリダイレクトに関するRFC 1945が定義していることにGoogleが従っています。リダイレクトが6回続くと、Googleは404として処理します。]

RankBrain

リダイレクトの扱いに、RankBrainはどのように適用するのか?

RankBrainはリダイレクトとは関係ない。

[鈴木注: どんなことでも、何かにつけてRankBrainに絡めてくる人たちがいるので、前もって牽制しているのかもしれません。]

ミューラー氏は、最後に次のように締めくくります。

ウェブは完璧ではないが、検索エンジンは見つけたものを処理しなければならない。恒久的なリダイレクトが適しているはずなのに、一時的なリダイレクトを使っているサイトがあるし、逆のパターンもある。そういうわけで、リダイレクトというのは、正しいURLを選択する、つまり正規化するためのいくつかあるシグナルの1つに過ぎない。

301と302について簡単にまとめると次のようになる。

  • 301: “S”がインデックスされやすい。リダイレクト先のコンテンツはキャッシュされる。
  • 302: “R”がインデックスされやすい。リダイレクト先のコンテンツはキャッシュされない。

以上です。
どうだったでしょうか?

どのリダイレクト方法を使おうかと迷ったときの有用な指針になりますね。

どんな種類であろうが、リダイレクトは、PageRankほか、転送元の評価が転送先に引き継がれるかどうか(正確に言えば、どちらがインデックスされるかどうか)に関わる“1つ”の要因です。
そのほかの条件を含めて判断したうえで、リダイレクト元とリダイレクト先のどちらをインデックスすべきかをGoogleは最終的に判断します。

条件が100%同じサイトというのはありえません。
なので、「302はPageRankを渡す・渡さない」は不毛の論争です。

しかし“1つの要因”とはいえ、望んでいないようにGoogleに処理されることがないように、ミューラー氏による解説を十分に理解して、想定と環境に合わせた適切なリダイレクトを実装するようにしましょう。